Domanda

Abbiamo 1 capogruppo pom. Questo utilizza dependencyManagement per gestire le versioni per tutte le dipendenze di tutti i manufatti utilizzati.

Quello che è allarmante, è che le versioni di istantanee possono essere definiti in dependencyManagement. Anche se quando si esegue il rilascio Maven, il pom è permesso di essere rilasciato con la versione istantanea nel dependencyManagement. Perché?

Se io punto un progetto figlio a una versione rilasciata del pom capogruppo, e questo progetto bambino utilizza una dipendenza definito dependencyManagement se si tratta di una versione ISTANTANEA, io sono in grado di rilasciare il progetto figlio.

Perché Maven permette versione snapshot per un manufatto definito dependencyManagement per essere rilasciato? E come posso configurare il plugin rilascio Maven a fallire se c'è una versione ISTANTANEA definito?

È stato utile?

Soluzione

  

Quello che è allarmante, è che le versioni di istantanee possono essere definiti in dependencyManagement. Anche se quando si esegue il rilascio Maven, il pom è permesso di essere rilasciato con la versione istantanea nel dependencyManagement. Perché?

mi aspetterei il Maven-release-plugin per aggiornare ISTANTANEA versioni in dependencyManagement al momento del rilascio. In realtà, ci sono alcuni Jira su questo, per esempio MRELEASE-91 e MRELEASE-202 che possono influenzare voi.

Quindi la domanda è: quale versione del plugin stai usando?

Ma ad essere onesti, non è davvero chiaro quali versioni sono affetti da MRELEASE-202 , i commenti sono confuse (così mi chiedo se il problema è stato risolto o meno). In ogni caso, se la versione in uso è interessato, quindi l'aggiornamento a una versione più recente. E se il bug / di regressione (penso che sia un bug) è ancora lì, quindi sollevare una nuova emissione.

Altri suggerimenti

Non ho la risposta da 'perché' (personalmente penso che sia un bug), ma ho un modo per evitare che ciò accada. Utilizzare il plugin Maven Enforcer

Una società chiamata smartics (s minuscola) hanno creato una regola ( NoSnapshotDependenciesInDependencyManagementRule ) per evitare questo problema esatto.

È fondamentalmente bisogno di aggiungere quanto segue al POM genitore:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>1.4.1</version>
  <executions>
    <execution>
      <id>enforce-project-rules</id>
      <phase>test</phase>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <NoSnapshotDependenciesInDependencyManagementRule
            implementation="de.smartics.maven.enforcer.rule.NoSnapshotsInDependencyManagementRule">
            <onlyWhenRelease>true</onlyWhenRelease>
            <checkOnlyResolvedDependencies>false</checkOnlyResolvedDependencies>
          </NoSnapshotDependenciesInDependencyManagementRule>
        </rules>
      </configuration>
    </execution>
  </executions>
  <dependencies>
    <dependency>
      <groupId>de.smartics.rules</groupId>
      <artifactId>smartics-enforcer-rules</artifactId>
      <version>1.0.2</version>
    </dependency>
  </dependencies>
</plugin>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top