1. ホーム
  2. java

[解決済み] mavenのjar-with-dependenciesの名前を変更することは可能でしょうか?

2022-04-28 22:52:57

質問

現在、jar-with-dependenciesアセンブリを使用して、そのようなjarを作成しています。 しかし、私のjarの名前は少し長いです。

このjarはAS400上のRPGプログラムで使用されているので、開発者が少しでも楽になるように短くしたい。 しかし、手作業で行う以外に、jarの名前を通常の project-name-version-classifier-jar-with-dependencies.jar . 次のようなものが欲しいのです。 project-name-version-classifier-full.jar

基本的に jar-with-dependencies アセンブリディスクリプタをコピーして、それをフルに呼び出すことなく、これを行う方法はありますか?

さらに、クラスパスがアセンブルされていないjarをリポジトリに保存し続けたいのです。

私は2つの成果物が必要です。 ビルドの対象となるリージョンを保持する、私の分類器を含む jar。 そして、その地域を含むすべての依存関係のある jar。

project-name-version-region-full.jarproject-name-version-region.jar がリポジトリに保存されている必要があります。 最初の例では分類子はregion-fullで、2番目ではregionです。 後者は動作しています。

どのように解決するのですか?

を指定することができます。 ファイナルネーム プロパティでjarに好きな名前を付け、そのjarに appendAssemblyId を false にすることで、サフィックスが "jar-with-dependencies" にならないようにすることができます。

以下の設定により、"test.jar"というjarが出力されます。

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.2-beta-4</version>
  <executions>
    <execution>
      <id>jar-with-dependencies</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <finalName>test</finalName>
        <appendAssemblyId>false</appendAssemblyId>
      </configuration>
    </execution>
  </executions>
</plugin>


更新:あなたのコメントに基づいて、組み込みディスクリプタを使用しても動作しません。これは、最近のバージョンのアセンブリプラグインのバグによるものだと思います。

回避策としては、"Assembly "メソッドで使用されているアセンブリディスクリプタをコピーして jar-with-dependencies ディスクリプタを変更し、idを修正します。

この例では、アセンブリIDがfinalNameに付加されることになるので、もし、名前を リージョン・フル.jar と指定すれば、finalNameを 地域 で、アセンブリIDは フル . この結果、ターゲットにregion-full.jarというファイルが作成されますが、これはまだMavenリポジトリに フル を分類子として使用します。このidが他のアセンブリのidと異なる限り、衝突は起こらないはずです。

pomの構成はこのようになります。

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.2-beta-4</version>
  <executions>
    <execution>
      <id>jar-with-dependencies</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      <configuration>
        <descriptors>
          <descriptor>src/main/assembly/jar-assembly.xml</descriptor>
        </descriptors>
        <finalName>region</finalName>
      </configuration>
    </execution>
  </executions>
</plugin>

で、src/main/assemblyにあるjar-assembly.xmlをこのようにします。

<assembly>
  <id>full</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <unpack>true</unpack>
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <directory>${project.build.outputDirectory}</directory>
    </fileSet>
  </fileSets>
</assembly>