web-dev-qa-db-ja.com

Mavenを使用してファイル名からバージョン番号を削除する

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

私が期待する結果を達成するための最良の方法は何でしょうか?

42
Bani

耳モジュールでは、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>
21
Pascal Thivent

これを実現するには、pomでfinalNameプロパティを次のように指定します。

<build>
    <finalName>${project.artifactId}</finalName>
</build>
95
Péter Török

ポイント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からすべてのバージョン番号が削除されます。

0
Daniele Licitra