32

私はmavenアセンブリプラグインを使用して、.tar他のいくつかのファイル、依存jarを含むファイルを生成しています。すべてのファイルが config の指定されたフォルダーに正しくコピーされていますassembly.xml

元のプロジェクト jar も最終的な tar ファイルに含めたいのですが、現在は表示されません。

assembly:singleゴールを発行すると、次のメッセージが表示されます。

[警告] プロジェクト成果物を含めることはできません: com.my.newpkg.project1:jar:0.0.3.0; 関連付けられたファイルまたはディレクトリはありません。

SOを読んだ後、次の構成をpom.xml追加してjarを追加する必要があるようですが、それでも期待される結果が得られません。

pom.xml の設定

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <version>2.4</version>
   <configuration>
       <archive>
           <manifest>
               <mainClass>com.my.newpkg.project1.MainClass</mainClass>
               <addClasspath>true</addClasspath>
               <classpathPrefix>lib/</classpathPrefix>
           </manifest>
       </archive>
   </configuration>
</plugin>

assembly.xml のスニペット

<formats>
    <format>dir</format>
    <format>tar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <outputDirectory>lib</outputDirectory>
        <excludes>
            <exclude>junit:junit</exclude>
        </excludes>
        <fileMode>0755</fileMode>
    </dependencySet>
</dependencySets>

それで、設定はまだ正しくありませんか?または私はここに何かが欠けていますか?

現在のプロジェクト jar を最終的な tar に追加するにはどうすればよいですか

4

1 に答える 1

61

<dependencySet>と言って現在のプロジェクト jar を除外できますが、<useProjectArtifact>false</useProjectArtifact>デフォルトでは true であるため、動作するはずです。

警告から、最初に行う必要があるようですが、内部の maven の問題により、別のコマンドで行うとmvn package機能しません。mvn packagemvn assembly:single

mvn package assembly:single1つのコマンドで実行すると機能します。

または、pom に maven-assembly-plugin を追加し、それを「パッケージ」フェーズにバインドして、次の場合に自動的にトリガーされるようにしますmvn package

   <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <id>tar-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>etc/assembly.xml</descriptor>
              </descriptors>
            </configuration>
          </execution>
        </executions>
      </plugin>
于 2013-01-11T11:07:35.663 に答える