7

Add jar-with-dependencies artifact from other Maven module と同様の状況がありますが、提案された解決策はうまくいきませんでした。と の両方moduleSetsを使ってみましたdependencySets。だからここに行きます:

序章:

マルチモジュールのmavenプロジェクトがあります:

parent
|
+-myProject
|
+-myProjectTests

myProjectTests のjar-with-dependencies出力ディレクトリに myProject によって生成され、統合テストなどを実行する必要があります (実際の jar を実行する必要があるフレームワークを使用しています)。

親 pom.xml :

<project>
  <groupId>myGroup</groupId>
  <artifactId>parent</artifactId>
  <packaging>pom</packaging>
  
  <modules>
    <module>myProject</module>
    <module>myProjectTests</module>
  </modules>
</project>

myProject pom.xml :

<project>
  <groupId>myGroup</groupId>        
  <artifactId>myProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <build>
    <plugins>    
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </plugins>
</project>

myProjectTests pom.xml :

<project>

  <groupId>myGroup</groupId>
  <artifactId>myProjectTests</artifactId>
  <version>0.0.1-SNAPSHOT</version>    
  <packaging>pom</packaging>

  <dependencies>
    <dependency>
      <groupId>myGroup</groupId>
      <artifactId>myProject</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>prepareTests</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>prepare.xml</descriptor>
              </descriptors>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

prepare.xml :

<assembly>      
  <id>prepareTests</id>
  <formats>
    <format>dir</format>
  </formats>

  <includeBaseDirectory>false</includeBaseDirectory>
  ?????
</assembly>

モジュールセット:

moduleSets?????を指定してみると 次のように私の prepare.xml で:

<moduleSets>
  <moduleSet>
    <useAllReactorProjects>true</useAllReactorProjects>
    <includes>
      <include>myGroup:myProject</include>
    </includes>
    <binaries>
      <attachmentClassifier>jar-with-dependencies</attachmentClassifier>
      <unpack>false</unpack>
    </binaries>
  </moduleSet>
</moduleSets>

私はこの出力を得る:

[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o  'myGroup.myProject'

[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o  'myGroup.myProject'

[WARNING] NOTE: Currently, inclusion of module dependencies may produce unpredictable results if a version conflict occurs.

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.4:single (prepareTests) on project myProjectTests: Failed to create assembly: Error creating assembly archive prepareTests: You must set at least one file. -> [Help 1]

私はmavenのドキュメントとインターネットで解決策を探し、さまざまなフラグのさまざまな組み合わせを試しましたが、すべて同じエラーが発生しました。

依存関係セット:

dependencySets????? で指定すると そのようです:

<dependencySets>
  <dependencySet>
    <includes>
      <include>myGroup:myProject:jar-with-dependencies:0.0.1-SNAPSHOT</include>
    </includes>
    <unpack>false</unpack>
  </dependencySet>
</dependencySets>

私はこれを得る:

[WARNING] Cannot include project artifact: myGroup:myProjectTests:pom:0.0.1-SNAPSHOT; it doesn't have an associated file or directory.
[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o  'myGroup:myProject:jar-with-dependencies:0.0.1-SNAPSHOT'

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.4:single (prepareTests) on project myProjectTests: Failed to create assembly: Error creating assembly archive prepareTests: You must set at least one file. -> [Help 1]

繰り返しになりますが、さまざまなフラグの組み合わせを試し、jar-with-dependencies分類子を削除しましたが、すべて効果がありませんでした。

どちらの場合も、デバッグ ログに役立つものは何もありません。デバッグ ログで提案されたいくつかの方法を調べました。

私が望むのは簡単です-理想的には直接ファイルパスを使用せずに、パッケージフェーズ中に myProject によって生成された jar-with-dependencies ファイルを myProjectTests の出力ディレクトリに配置することです。Mavenにそれをさせるにはどうすればよいですか?

4

1 に答える 1

9

これは Maven の既知のバグであることが判明しました。サブモジュールにアグリゲーター プロジェクトが親として含まれていない場合、アセンブリ プラグインは正しく動作しません - MASSEMBLY-600。代わりに、直接のファイル依存関係を使用する必要があるようです。

于 2013-11-05T14:03:14.793 に答える