Mavenを使用してファイル名からバージョン番号を削除する
-
19-09-2019 - |
質問
Maven に 5 つのモジュールを含むプロジェクトがあります。現在、「mvn clean install」を実行すると、他のモジュールからの 2 つの jar、1 つの war と 1 つの sar を含む 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
要素を設定することも、 maven-ear-プラグイン をサポートする finalName
オプションのパラメータ。バンドルされた jar の最終的な名前を設定するには、 jarModule
そして設定するには bundleFileName
そのための財産。
最終的な構成は次のようになります (ここでは、プラグイン構成で最終的な Ear 名を設定する方法を示します)。
<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>
他のヒント
あなたはこのようなあなたのポンポンでfinalName
プロパティを指定することによって、これを達成することができます:
<build>
<finalName>${project.artifactId}</finalName>
</build>
ポイント 1 :単一の JAR/WAR。
名前にバージョン番号を含めずに作成するには、pom.xml に次のコードを追加するだけです。
<build>
<finalName>${project.artifactId}</finalName>
</build>
したがって、たとえば projectx_misc をコンパイルすると、次のようになります。 プロジェクトx_misc.jar .
私はどうなるのでしょうか?POM プロジェクト (Netbeans 内) から同じパッケージをコンパイルすると、すべての jar の名前にバージョンが含まれ、EAR には xxx-version.jar アーカイブが含まれます。
したがって、ポイント 2:EARの問題。
EAR の pom.xml ファイルで、 maven-ear-プラグイン このプロパティを構成に追加します。
<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 から削除されます。