次のように定義されたモジュールを持つ親 pom があります。
親 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"
<modelVersion>4.0.0</modelVersion>
<groupId>parent</groupId>
<artifactId>parent</artifactId>
<version>1.0.2-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>../proj1</module>
<module>../proj2</module>
</modules>
</project>
子モジュールの pom ファイルは次のとおりです。
proj2 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>
<parent>
<groupId>parent</groupId>
<artifactId>parent</artifactId>
<version>1.0.2-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<groupId>proj2</groupId>
<artifactId>proj2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
</project>
proj1 pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmln: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>
<parent>
<groupId>parent</groupId>
<artifactId>parent</artifactId>
<version>1.0.2-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<groupId>proj1</groupId>
<artifactId>proj1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
</project>
しかし、バージョン プラグインを使用すると、モジュールではなく、親のバージョン番号が設定されるだけです。これが私が使用しているコマンドです:
versions:set -DnewVersion=1.0.2-SNAPSHOT
出力は次のとおりです。
[INFO] proj1 ...................................... SKIPPED
[INFO] proj2 ...................................... SKIPPED
[INFO] parent ......................................SUCCESS
サブモジュールはスキップされています。親だけでなく、サブモジュールも更新できるようにするにはどうすればよいですか?
更新:子モジュールからバージョンタグを削除しようとしたため、子モジュールは次のようになりました:
<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>
<parent>
<groupId>parent</groupId>
<artifactId>parent</artifactId>
<version>1.0.2-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<groupId>proj2</groupId>
<artifactId>proj2</artifactId>
<packaging>war</packaging>
</project>
<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>
<parent>
<groupId>parent</groupId>
<artifactId>parent</artifactId>
<version>1.0.2-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<groupId>proj1</groupId>
<artifactId>proj1</artifactId>
<packaging>war</packaging>
</project>
ただし、子 pom ファイルではバージョン番号が更新されていません。
更新:これが私がこのプロセスがどのように機能すると思うかです。お気軽に改訂を提案してください:
理論的には (私はこれをテストしていません)、ネストされたファイル構造で Maven は、ゴール 'ons:set -DnewVersion=1.0.2-SNAPSHOT' が実行されると、各子モジュールの個々のバージョン番号を更新します。
ただし、フラット ファイル構造では、親モジュールのバージョンが同じ場合、子モジュールでバージョン番号を指定する必要はありません。これは、子のバージョン番号が設定されていない場合、親のバージョン番号が使用されるためです。したがって、親モジュールのすべての子モジュールを更新するには、親モジュールのバージョン番号を更新するだけです。すべての子モジュールにバージョン番号が設定されていない場合、親モジュールと同じバージョン番号になります。