Mavenは3.1.0です。
プロジェクトのpom.xmlでversions-maven-plugin:2.2を使用しています(以下を参照)。通常のpom.xmlファイル構成とは別に、以下のメインコードのスナップショットを示しています。
<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 "vapp" and
"deployer" 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>
これで、mvn clean installを実行すると、正常にビルドされます。
[〜#〜] note [〜#〜]:私のプロジェクトには親セクションがあり、グループID「com.company.product」がデプロイ親のアーティファクトに依存しています。 tools-parentアーティファクト(上記でpom.xmlを貼り付けたもの)と同じグループIDですが、deploy-parentは別のリポジトリ/プロジェクトのアーティファクトです。
mvn versions:set -DnewVersion = 0.0.7を実行すると、次のエラーメッセージが表示されます。
[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
今、versions-maven-pluginのバージョンを2.1(以前使用していたもの)に戻すと、上記のmvn versions:set -DnewVersion = 0.0.7コマンドが正常に機能し、POMになります。ツールの親アーティファクトのxmlファイルは正常に<version>0.0.7</version>
に変更されています。
バージョン2.2では、エラーが発生し、バージョンが0.0.7に変更されません。
バグのようです。
解決:
1。 ...セクションの外に<groupId>com.company.product</groupId>
プロパティを追加する必要があります同様につまり、ツール-親の場合、今バージョン-maven-plugin:2.2は正常に機能しています一番上の行を追加しました(以下を参照)。唯一のことは、親セクションの使用方法は何ですか(deploy-parentがtools-parentプロジェクトに提供しているもののメインコードを継承することを除いて)。バージョンIDが正常に機能するために、GroupIdがArtifactId Tools-Parentの親セクションの定義済み出力である必要があるのはなぜですか?.
最も重要なことは:この問題は、プロジェクト/モジュールのpom.xmlに<parent>
セクションがあり、親セクションのArtifactIdがプロジェクト自体の親ではない場合にのみ発生します(典型的な-Maven Uncleシチュエーション)つまり、tools-parentアーティファクトが別のモジュールの親セクション(tools-childとしましょう)で定義されている場合、バージョン2.2は正常に動作します。しかし、tools-childの親セクションに「tools-parent」としてのArtifactIdが含まれておらず、exの他の何かである場合:deploy-parent/some-different-project-artifact(ソースの別のプロジェクトに存在します)コントロールツール)次に、tools-childアーティファクトIDの場合、groupId値も親セクションの外側に設定する必要があります(groupId of 親セクションのArtifactIdは、tools-childのgroupId)と同じ/異なります。
<groupId>com.company.product</groupId>
<artifactId>tools-parent</artifactId>
<version>0.0.7-SNAPSHOT</version>
<packaging>pom</packaging>
<description>
Infrastructure related to the "vapp" and
"deployer" utilities.
</description>
<parent>
<groupId>com.company.product</groupId>
<artifactId>deploy-parent</artifactId>
<version>0.0.6-SNAPSHOT</version>
</parent>
--[〜#〜]または[〜#〜]
2。 versions-maven-pluginに切り替えます:2.1
Arunの回答のパート2に追加するために、プラグインのバージョン2.1を使用する方法は次のとおりです。
mvn org.codehaus.mojo:versions-maven-plugin:2.1:set org.codehaus.mojo:versions-maven-plugin:2.1:commit -DnewVersion=0.0.7
完全なグループIDと成果物IDを指定する必要があります。
この問題について報告されているこのバグが見つかりました:
私もNPEに遭遇しましたが、その理由は 以前に提案された とは異なる理由でした。私はversions-maven-pluginをデバッグしましたが、NPEは<version>
にリストされている依存関係の<dependencyManagement>
宣言が欠落していることが原因であることがわかりました。これは、次のリストで再現できます。
<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>