マルチモジュールのMavenプロジェクトがあり、Assemblyプラグインのモジュールセットソース部分を機能させようとしています。
モジュール "module_parent"、 "module_a"、および "module_Assembly"があります。
module_aおよびmodule_Assemblyはmodule_parentの子です。
module_Assemblyはmodule_aにpom依存関係を宣言しています。
module_assmeblyにはAssemblyプラグインがあり、Assembly.xmlは次のようになります。
<?xml version="1.0"?>
<Assembly>
<id>bin</id>
<formats>
<format>Zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>com.mystuff:module_a</include>
</includes>
<sources>
<fileSets>
<fileSet>
<outputDirectory>/</outputDirectory>
<excludes>
<exclude>**/target/**</exclude>
</excludes>
<directory>/</directory>
</fileSet>
</fileSets>
</sources>
</moduleSet>
</moduleSets>
</Assembly> <!-- -->
module_aのmodule_Assemblyに明示的な依存関係があります。module_Assemblyのpomの依存関係は次のようになります:
<dependencies>
<dependency>
<groupId>com.mystuff</groupId>
<artifactId>module_a</artifactId>
<version>1.0</version>
<type>pom</type>
</dependency>
</dependencies>
デバッグをオンにした状態でmvnパッケージから取得するエラーは次のとおりです。
[DEBUG] All known ContainerDescritporHandler components: [metaInf-services, plexus, metaInf-spring, file-aggregator]
[DEBUG] No dependency sets specified.
[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o 'com.mystuff:module_a'
[DEBUG] Cannot find ArtifactResolver with hint: project-cache-aware
org.codehaus.plexus.component.repository.exception.ComponentLookupException: Java.util.NoSuchElementException
role: org.Apache.maven.artifact.resolver.ArtifactResolver
roleHint: project-cache-aware
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.Java:257)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.Java:233)
at
<snip>
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:352)
Caused by: Java.util.NoSuchElementException
at Java.util.Collections$EmptyIterator.next(Collections.Java:3006)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.Java:253)
... 43 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
<snip>
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-Assembly-plugin:2.2:single (make-Assembly) on project apm-server-distribution: Failed to create Assembly: Error creating Assembly archive bin: You must set at least one file. -> [Help 1]
org.Apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.Apache.maven.plugins:maven-Assembly-plugin:2.2:single (make-Assembly) on project apm-server-distribution: Failed to create Assembly: Error creating Assembly archive bin: You must set at least one file.
主な問題はこの警告行だと思います。
[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o 'com.mystuff:module_a'
これを修正するにはどうすればよいですか?
Module_Assemblyにモジュールへの子参照がない場合、モジュールとしてカウントされません。ここでの内容は子供のみを参照していることに注意してください: http://maven.Apache.org/plugins/maven-Assembly-plugin/advanced-module-set-topics.html
これを行う場合は、moduleSetではなくdependencySetを使用する必要があります。
PS-賞金をありがとう!
次の構成を使用して機能しました。
<includeSubModules>false</includeSubModules>
<useAllReactorProjects>true</useAllReactorProjects>
同様の問題があるため、アセンブリプラグインをデバッグしていましたが、問題は<useAllReactorProjects>true</useAllReactorProjects>
だと思います。その上に、タグ<includeSubModules>
もあります。これはおそらくあなたが望むものです。
<Assembly>
<id>bin</id>
<formats>
<format>Zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<useAllReactorProjects>false</useAllReactorProjects><!-- Or just don't remove this line -->
<includeSubModules>true>
...
</moduleSet>
</moduleSets>
</Assembly
module_aはmodule_Assemblyのサブモジュールではないため、試行しているものは機能しません。
ここにあなたができることのいくつかのアイデアがあります: