Frage

Wir haben 1 Firmen -Elternpom. Dies verwendet Abhängigkeitsmanagement, um die Versionen für alle Abhängigkeiten aller verwendeten Artefakte zu verwalten.

Alarmierend ist, dass Snapshot -Versionen in Abhängigkeitsmanagement definiert werden können. Wenn Maven Release ausgeführt wird, darf der POM mit einer Snapshot -Version in Abhängigkeitsmanagement veröffentlicht werden. Wieso den?

Wenn ich ein Kinderprojekt auf eine veröffentlichte Version des Parent POM des Unternehmens verweile und dieses Kinderprojekt eine Abhängigkeit verwendet, die in Abhängigkeitsmanagement definiert ist, obwohl es sich um eine Snapshot -Version handelt, kann ich das Kinderprojekt nicht veröffentlichen.

Warum erlaubt Maven die Snapshot -Version für ein in Abhängigkeitsmanagement definierter Artefakt? Und wie kann ich das Maven Release -Plugin so konfigurieren, dass es fehlschlägt, wenn eine Snapshot -Version definiert ist?

War es hilfreich?

Lösung

Alarmierend ist, dass Snapshot -Versionen in Abhängigkeitsmanagement definiert werden können. Wenn Maven Release ausgeführt wird, darf der POM mit einer Snapshot -Version in Abhängigkeitsmanagement veröffentlicht werden. Wieso den?

Ich würde das erwarten Maven-Release-Plugin So aktualisieren Sie Snapshot -Versionen in dependencyManagement nach Freigabe. Eigentlich gibt es zum Beispiel einige Jira Mrelease-91 und Mrelease-202 Das kann Sie betreffen.

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

Aber um ehrlich zu sein, ist nicht wirklich klar, welche Versionen von Versionen betroffen sind Mrelease-202, Die Kommentare sind verwirrend (ich frage mich, ob das Problem behoben ist oder nicht). Wenn die von Ihnen verwendete Version betroffen ist, dann auf eine neuere Version. Und wenn der Fehler/die Regression (ich denke, es ist ein Fehler), dann ein neues Problem aufwerfen.

Andere Tipps

Ich habe nicht die Antwort auf "Warum" (persönlich denke ich, es ist ein Fehler), aber ich habe die Möglichkeit, dies zu verhindern: Verwenden Sie das Maven Enforcer -Plugin.

Eine Firma angerufen Smartics (Kleinbuchstaben s) haben eine Regel erstellt (NosnapshotdependenciesIndependencyManagementRule) um dieses genaue Problem zu verhindern.

Im Grunde müssen Sie Ihrem übergeordneten Pom Folgendes hinzufü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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top