5

Abbiamo 1 padre di società pom. Questo utilizza dependencyManagement per gestire le versioni per tutte le dipendenze di tutte le risorse utilizzate.perché il plugin di rilascio di maven consente la versione SNAPSHOT nella gestione delle dipendenze?

Ciò che è allarmante è che le versioni di SNAPSHOT possono essere definite in dependencyManagement. Sebbene quando viene eseguita la versione di Maven, è possibile rilasciare pom con la versione SNAPSHOT in dependencyManagement. Perché?

Se si punta un progetto figlio a una versione rilasciata del padre padre dell'azienda e questo progetto figlio utilizza una dipendenza definita in dependencyManagement sebbene sia una versione SNAPSHOT, non riesco a rilasciare il progetto figlio.

Perché Maven consente la versione SNAPSHOT per un oggetto definito in dependencyManagement da rilasciare? E come posso configurare il plugin di rilascio di Maven in caso di errore se è stata definita una versione SNAPSHOT?

risposta

3

Ciò che è allarmante è che le versioni di SNAPSHOT possono essere definite in dependencyManagement. Sebbene quando viene eseguita la versione di Maven, è possibile rilasciare pom con la versione SNAPSHOT in dependencyManagement. Perché?

mi aspetterei che il maven-release-plugin per aggiornare le versioni istantanea nel dependencyManagement al momento del rilascio. In realtà, ci sono alcuni Jira su questo, ad esempio MRELEASE-91 e MRELEASE-202 che possono influenzare l'utente.

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

Ma per essere onesti, non è molto chiaro quali versioni siano interessate da MRELEASE-202, i commenti sono confusi (quindi mi chiedo se il problema è stato risolto o meno). Ad ogni modo, se la versione che stai utilizzando è influenzata, esegui l'aggiornamento a una versione più recente. E se il bug/regressione (penso che sia un bug) è ancora lì, quindi sollevare un nuovo problema.

+0

thx. stiamo usando 2.0-beta-9. daremo un'occhiata a questi biglietti jira – joshjdevl

+0

New JIRA su questo problema [MRELEASE-454] (https://issues.apache.org/jira/browse/MRELEASE-454). Sembra che sia stato corretto in 2.2.2, ma è stato reintrodotto, almeno in 2.4. – Tunaki

0

Non ho la risposta a "perché" (personalmente penso che sia un bug), ma ho un modo per evitare che ciò accada: utilizzare il plug-in Maven Enforcer.

Una società denominata smartics (lettere minuscole) ha creato una regola (NoSnapshotDependenciesInDependencyManagementRule) per evitare questo problema esatto.

Che, 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>