5

Wir haben 1 Firma Elternteil Pom. Dies verwendet dependencyManagement, um die Versionen für alle Abhängigkeiten aller verwendeten Artefakte zu verwalten.Warum ermöglicht Maven Release Plugin für SNAPSHOT-Version in Abhängigkeitsverwaltung?

Was alarmierend ist, ist, dass SNAPSHOT-Versionen können in dependencyManagement definiert werden. Wenn die Mavenfreigabe ausgeführt wird, kann der Pom jedoch mit der SNAPSHOT-Version in dependencyManagement freigegeben werden. Warum?

Wenn ich ein untergeordnetes Projekt auf eine freigegebene Version des Firmenelternteils pom zeige und dieses untergeordnete Projekt eine in dependencyManagement definierte Abhängigkeit verwendet, obwohl es sich um eine SNAPSHOT-Version handelt, kann ich das untergeordnete Projekt nicht freigeben.

Warum Maven SNAPSHOT Version für einen Artefakt erlaubt in dependencyManagement definiert freigegeben werden? Und wie kann ich das Maven-Release-Plugin so konfigurieren, dass es fehlschlägt, wenn eine SNAPSHOT-Version definiert ist?

Antwort

3

Was alarmierend ist, ist, dass SNAPSHOT-Versionen in Abhängigkeitsverwaltung definiert werden können. Wenn die Mavenfreigabe ausgeführt wird, kann der Pom jedoch mit der SNAPSHOT-Version in dependencyManagement freigegeben werden. Warum?

Ich würde erwarten, dass die maven-release-plugin SNAPSHOT Versionen in dependencyManagement bei der Freigabe zu aktualisieren. Tatsächlich gibt es einige Jira darüber, zum Beispiel MRELEASE-91 und MRELEASE-202, die Sie betreffen können.

Die Frage ist also: Welche Version des Plugins verwenden Sie?

Aber um ehrlich zu sein, ist es nicht wirklich klar, welche Versionen von MRELEASE-202 betroffen sind, sind die Kommentare verwirrend (so frage ich mich, ob das Problem behoben ist oder nicht). Wenn die von Ihnen verwendete Version betroffen ist, führen Sie ein Upgrade auf eine neuere Version durch. Und wenn der Bug/die Regression (ich denke, es ist ein Bug) immer noch da ist, dann hebe ein neues Problem auf.

+0

thx. Wir verwenden 2.0-Beta-9. Wir werfen einen Blick auf diese Jira-Tickets – joshjdevl

+0

Neue JIRA über dieses Problem [MRELEASE-454] (https://issues.apache.org/jira/browse/MRELEASE-454). Sieht so aus, als wäre es in 2.2.2 behoben worden, wurde aber zumindest in 2.4 wieder eingeführt. – Tunaki

0

Ich habe die Antwort nicht so auf ‚Warum‘ (ich persönlich glaube es ein Fehler ist), aber ich habe einen Weg, um dies zu verhindern: die Maven Enforcer-Plugin verwenden.

Eine Firma namens smartics (Kleinbuchstaben s) haben eine Regel (NoSnapshotDependenciesInDependencyManagementRule) erstellt, um dieses genaue Problem zu verhindern.

Sie müssen im Grunde Folgendes zu Ihrer Mutter POM hinzuzufügen:

<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> 
Verwandte Themen