Mavenに5つのモジュールがあるプロジェクトがあります。現在、「mvn clean install」を実行すると、他のモジュールからの1つのwarと1つのsarの2つのjarを含むearが生成されます。
すべてのファイル名にはバージョンが含まれます(例:projectx-ear-2.0.0.ear、projectx-client-2.0.0.jarなど).
ファイル名のバージョンを省略するには、jarファイルの1つと最後のearの名前を変更する必要があります。次のようになります。
projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web
現在、次のプラグインを使用してビルドしています:maven-compiler-pluginおよびmaven-release-plugin
私が期待する結果を達成するための最良の方法は何でしょうか?
耳モジュールでは、project.build.finalName
要素、または finalName
オプションパラメータをサポートする maven-ear-plugin を設定できます。バンドルされたjarの最終名を構成するには、 jarModule
を定義し、bundleFileName
プロパティを設定する必要があります。
最終的な構成は次のようになります(プラグイン構成で最終的な耳の名前を設定する方法をここで説明します)。
<project>
[...]
<dependencies>
<dependency>
<groupId>yourgroupid</groupId>
<artifactId>projectx-client</artifactId>
<version>2.0.0</version><!-- not mandatory if inherited -->
</dependency>
[...]
</dependencies>
[...]
<build>
[...]
<plugins>
[...]
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>projectx-ear</finalName>
<modules>
<jarModule>
<groupId>yourgroupid</groupId>
<artifactId>projectx-client</artifactId>
<bundleFileName>anotherName.jar</bundleFileName>
</jarModule>
</modules>
</configuration>
</plugin>
[...]
</project>
これを実現するには、pomでfinalName
プロパティを次のように指定します。
<build>
<finalName>${project.artifactId}</finalName>
</build>
ポイント1:単一のJAR/WAR
名前にバージョン番号を付けずに作成するには、pom.xmlに次のコードを追加します。
<build>
<finalName>${project.artifactId}</finalName>
</build>
したがって、たとえばprojectx_miscをコンパイルすると、projectx_misc.jarが得られます。
私はどうなりますか? (Netbeansの)POMプロジェクトから同じパッケージをコンパイルすると、すべてのjarの名前にバージョンが含まれ、EARにはxxx-version.jarアーカイブが含まれます。
つまり、ポイント2:EARの問題。
EARのpom.xmlファイルで、構成にこのプロパティを追加してmaven-ear-pluginを変更します。
<fileNameMapping>no-version</fileNameMapping>
これは、たとえば私のプラグイン設定です:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.8</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<fileNameMapping>no-version</fileNameMapping>
</configuration>
</plugin>
したがって、プロジェクトpomからすべてのアーカイブをコンパイルすると、jarからすべてのバージョン番号が削除されます。