2017-02-04 10 views
0

私のプロジェクトのリリースバージョンを設定したいと思います。私はすべてのモジュールに集約pomを使用します。各モジュールの親は、前述の集合体ではありません。集約ルートが親pomでないマルチモジュールMavenプロジェクトのモジュールのバージョン番号を更新

私の質問はUpdating version numbers of modules in a multi-module Maven project質問とは異なります。そこには集約pomも親pomです。

集計のpom.xmlがある:

Module1標準のpom.xmlがある
<?xml version="1.0" encoding="UTF-8"?> 
<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>aggregate</artifactId> 
    <version>0.0.1</version> 
    <packaging>pom</packaging> 

    <modules> 
     <module>module1</module> 
    </modules> 

</project> 

<?xml version="1.0" encoding="UTF-8"?> 
<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>module-1</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <parent> 
     <groupId>com.example</groupId> 
     <artifactId>parent1</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <relativePath>../../parent1/pom.xml</relativePath> 
    </parent> 

</project> 

私が実行した場合:

mvn versions:set -DnewVersion=0.0.1 

[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Build Order: 
[INFO] 
[INFO] module-1 
[INFO] aggregate 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building aggregate 0.0.1 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- versions-maven-plugin:2.3:set (default-cli) @ aggregate --- 
[INFO] Searching for local aggregator root... 
[INFO] Local aggregation root: C:\Users\maxim.kirilov\workspace\maven-games\aggregate 
[INFO] Processing change of com.example:aggregate:0.0.1 -> 0.0.1 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] module-1 ........................................... SKIPPED 
[INFO] aggregate .......................................... SUCCESS [ 0.962 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 

Module1のがスキップされている理由?私は、各モジュールごとにmaven set versionコマンドを別々に呼び出すことを提案する記事を読んでいます。よりクリーンなソリューションをサポートしていますか?

答えて

1

(23/09/2017)は、ドキュメントがバージョンのMavenプラグインに追加されました。あなたが補足コマンドラインパラメータを追加する必要が集約プロジェクトの下ですべてのプロジェクトを更新するために:これは必要とされている

mvn versions:set -DnewVersion=0.0.1 -DoldVersion=* -DgroupId=* -DartifactId=* 

それが持っている原因そうでない場合は(-DoldVersion = 経由)のバージョン用のフィルタは、そのモジュールを除外しているでしょう残りのモジュールとは異なるバージョンです。さらに、-DgroupId =と-DartifactId = *を追加する必要があります。それ以外の場合は、モジュール-1もgroupIdとartifactIdの違いに基づいて除外されます。

-1

バージョンMavenプラグインを集約pom xmlに含める必要がある場合があります。 http://www.mojohaus.org/versions-maven-plugin/ http://www.mojohaus.org/versions-maven-plugin/usage.html

私はこのような何か:最近

<plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>versions-maven-plugin</artifactId> 
     <version>2.3</version> 
     <configuration> 
    <autoVersionSubmodules>true</autoVersionSubmodules> 
    </configuration> 
    </plugin> 
</plugins> 
+0

ドキュメントに 'autoVersionSubmodules'のような設定はありませんか?これは[maven-release-plugin](http://maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html)でのみ利用可能ですが、[versions-maven-plugin]では利用できません( http://www.mojohaus.org/versions-maven-plugin/) – khmarbaise

+0

2番目のリンクで、mvn -N versionsのようなものを読むことをお勧めします:update-child-modulesが役に立ちます。現時点では、autoVersionSubmoduleは無視できますが、私は両方のプラグインを使用しています:releasrと上記のコードとのバージョンは、うまく動作します。 – LNP

+0

autoVersionSubmoduleは、バージョン-maven-pluginで利用できる設定項目ではありません。これは、maven-release-pluginでのみ利用可能です。 versions-maven-pluginからは無視されます。 – khmarbaise

関連する問題