14

Maven ist 3.1.0.Maven Versionen-Maven-Plugin-Versionen Plugin 2.2

Ich verwende Versionen-Maven-Plugin: 2.2 in meinem Projekt pom.xml (wie unten gezeigt). Neben der üblichen pom.xml Datei-Konfiguration, ich bin nur der Haupt-Code Schnappschuss zeigt unter:

<project 
    xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <artifactId>tools-parent</artifactId> 
    <version>0.0.7-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <description> 
     Infrastructure related to the &quot;vapp&quot; and 
     &quot;deployer&quot; utilities. 
    </description> 

    <parent> 
     <groupId>com.company.product</groupId> 
     <artifactId>deploy-parent</artifactId> 
     <version>0.0.6-SNAPSHOT</version> 
    </parent> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-scm-plugin</artifactId> 
       <version>1.9.4</version> 
       <configuration> 
        <connectionType>connection</connectionType> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>versions-maven-plugin</artifactId> 
       <version>2.2</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-enforcer-plugin</artifactId> 
       <version>1.4</version> 
       <executions> 
        <execution> 
         <!-- Make sure that only non-snapshot versions are used for the dependencies. Only active when property 'snapshotDependencyAllowed' is false. --> 
         <id>enforce-no-snapshots</id> 
         <goals> 
          <goal>enforce</goal> 
         </goals> 
         <configuration> 
          <skip>${snapshotDependencyAllowed}</skip> 
          <rules> 
           <requireReleaseDeps> 
            <message>No Snapshots Allowed!</message> 
           </requireReleaseDeps> 
           <requireReleaseVersion> 
            <message>No Snapshots Allowed!</message> 
           </requireReleaseVersion> 
          </rules> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Nun, wenn ich laufen: mvn sauber installieren, baut es erfolgreich.

HINWEIS: In meinem Projekt habe ich einen übergeordneten Abschnitt, wo ich deploy-Parent Artefakt abhängig bin, deren Gruppen-ID "com.company.product" ist die gleiche Gruppen-ID, was ich Tools-Parent Artefakt (dessen pom.xml ich oben eingefügt habe) aber deploy-parent ist ein Artefakt eines anderen Repositories/Projekts.

Wenn ich: mvn Versionen: set -DnewVersion = 0.0.7, bekomme ich die folgende Fehlermeldung.

[INFO] ------------------------------------------------------------------------ 
[INFO] Building tools-parent 0.0.7-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- versions-maven-plugin:2.2:set (default-cli) @ tools-parent --- 
[INFO] Searching for local aggregator root... 
[INFO] Local aggregation root: /user/home/u100123/giga/tools 
[INFO] Processing change of com.company.product:tools-parent:0.0.7-SNAPSHOT -> 0.0.7 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] tools-parent .................................... FAILURE [1.093s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.404s 
[INFO] Finished at: Fri May 01 20:44:22 GMT-00:00 2015 
[INFO] Final Memory: 12M/246M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.codehaus.mojo:versions-maven-plugin:2.2:set (default-cli) on project tools-parent: Execution default-cli of goal org.codehaus.mojo:versions-maven-plugin:2.2:set failed. NullPointerException -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException 

NOW, wenn ich die Versionen-Maven-Plugin-Version ändern zurück auf 2,1 (das, was ich früher wurde mit), die oben mvn Versionen: set -DnewVersion = 0.0.7 Befehl erfolgreich arbeitet und Die Datei pom.xml wird erfolgreich in <version>0.0.7</version> für Tools-Parent-Artefakte geändert.

Mit Version 2.2, gibt es mir den Fehler und nicht die Version auf 0.0.7 zu ändern.

  1. Gibt es Gründe, warum 2.2 nicht funktioniert? Was kann getan werden, um es zu lösen?
+0

Am wichtigsten hier ist, dass die offizielle Ankündigung noch nicht gegeben wurde ... – khmarbaise

+0

Hm .. vielen Dank für die gemeinsame Nutzung. –

Antwort

23

Es scheint wie ein Bug.

Lösung:

. Ich muss hinzufügen <groupId>com.company.product</groupId> Eigenschaft außerhalb von ... Abschnitt sowie, d. H. Für Tools-Eltern, NOW Version-Maven-Plugin: 2.2 funktioniert gut, d. H. Ich fügte die obere Zeile hinzu (wie unten gezeigt). Die einzige Sache ist, was der Elternteil dann benutzt (abgesehen davon, dass er den Hauptcode davon geerbt hat, was deploy-parent zu tools-parent project bringt). Warum groupId definiert werden muss Ausgabe des übergeordneten Abschnitts für artifactId tools-parent, wenn es bereits im übergeordneten Abschnitt für Versionen vorhanden ist maven-plugin: 2.2, um erfolgreich zu arbeiten.

Das Wichtigste ist: Dieses Problem tritt nur Ihre pom.xml, falls für ein Projekt/Modul verfügt über einen <parent> wo die artifactId der Mutterabschnitt nicht die Eltern des Projekts ist es selbst (ein Maven Onkel Situation) dh wenn tools-parent artifact im Elternteil eines anderen Moduls definiert ist (zB tools-child), dann wird Version 2.2 erfolgreich funktionieren.Aber wenn der Elternbereich von tools-child die artifactId nicht als "tools-parent" enthält und etwas anderes für ex: deploy-parent/some-different-project-artifact (), das sich in einem anderen Projekt in Ihrem Quellcodeverwaltungstool befindet,) dann für Werkzeuge-Kind artifactId, brauchen wir groupId Wert auch als auch außerhalb des Mutterabschnitts gesetzt (auch wenn der groupId von Mutter Bereich von artifactId zu Tools-Kinder groupId) Gleich/unterschiedlich ist.

<groupId>com.company.product</groupId> 
<artifactId>tools-parent</artifactId> 
<version>0.0.7-SNAPSHOT</version> 
<packaging>pom</packaging> 

<description> 
    Infrastructure related to the &quot;vapp&quot; and 
    &quot;deployer&quot; utilities. 
</description> 

<parent> 
    <groupId>com.company.product</groupId> 
    <artifactId>deploy-parent</artifactId> 
    <version>0.0.6-SNAPSHOT</version> 
</parent> 

- ODER

. Wechseln Sie zurück auf den Versionen-Maven-Plugin: 2,1

+0

Wir sind zurück zu Version 2.1 und es funktioniert gut, genau wie zuvor ... – BlackEye

14

Nur um Teil 2 von Arun Antwort hinzuzufügen, die Art und Weise zu verwenden, die Version 2.1 Das Plugin ist:

mvn org.codehaus.mojo:versions-maven-plugin:2.1:set org.codehaus.mojo:versions-maven-plugin:2.1:commit -DnewVersion=0.0.7 

Sie müssen die vollständige Gruppen-ID und Artefakt-ID angeben.

+1

DANKE A LOS !!!! – t0r0X

+0

Funktioniert wie ein Zauber und braucht keine Modifikation in der Pom. Danke für diesen – PierreF

1

Ich lief in eine NPE auch, aber es stellt sich heraus, der Grund war ein anderer als suggested earlier. Ich debuggte das Versions-Maven-Plugin und fand heraus, dass die NPE durch eine fehlende <version> Deklaration einer Abhängigkeit in der in der <dependencyManagement> aufgeführten Ursache verursacht wurde. Dies kann mit der folgenden Auflistung wiedergegeben werden:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.example</groupId> 
    <artifactId>npe</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>NPE Example</name> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-context</artifactId> 
       <!-- missing <version>4.2.0.RELEASE</version> --> 
       <scope>runtime</scope> 
       <exclusions> 
        <exclusion> 
         <groupId>commons-logging</groupId> 
         <artifactId>commons-logging</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.2.0.RELEASE</version> 
     </dependency> 
    </dependencies> 
</project> 
Verwandte Themen