47

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

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

4

3 に答える 3

111

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

<build>
    <finalName>${project.artifactId}</finalName>
</build>
于 2010-02-08T22:10:16.437 に答える
22

耳モジュールでは、project.build.finalName要素を使用するか、オプションのパラメーターをサポートするmaven-ear-pluginを構成できます。また、バンドルされたjarの最終的な名前を構成するには、を定義し、そのプロパティを設定finalNameする必要があります。jarModulebundleFileName

最終的な構成は次のようになります(プラグイン構成で最終的な耳の名前を設定する方法をここで示します)。

<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>
于 2010-02-08T22:51:16.047 に答える
2

ポイント1:単一のJAR/WAR。

名前にバージョン番号を付けずに作成するには、pom.xmlに次のコードを追加するだけです。

<build>
  <finalName>${project.artifactId}</finalName>
</build>

したがって、たとえばprojectx_miscをコンパイルすると、projectx_misc.jarが取得されます。

私はどうなりますか?POMプロジェクト(Netbeans内)から同じパッケージをコンパイルすると、すべての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から削除されます。

于 2018-11-19T15:01:31.777 に答える