2013-06-26 13 views
14

私はマルチモジュールプロジェクトを持っていますが、アセンブリプラグインのモジュールセットソース部分を動作させようとしています。mavenアセンブリプラグインモジュールセットソース命令にファイルが含まれておらず、含まれているモジュールと一致しません

は、私が "module_parent"、 "module_a"、および "module_assembly" モジュールを持っています。

module_amodule_assemblymodule_parentの子です。

module_assemblyは、module_aにpom依存関係を宣言しています。

<?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_assmeblyはassembly.xmlは次のように見ていると、アセンブリのプラグインを持っています。

<dependencies> 
    <dependency> 
     <groupId>com.mystuff</groupId> 
     <artifactId>module_a</artifactId> 
     <version>1.0</version> 
     <type>pom</type> 
    </dependency> 
</dependencies> 

デバッグをオンにして、私はMVNパッケージから取得するエラーは次のとおりです:

[WARNING] The following patterns were never triggered in this artifact inclusion filter: 
    o 'com.mystuff:module_a' 
[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. 

私は主な問題は、この警告ラインだと思うようにmodule_assemblyのポンポンで依存性が見えます

これを修正するにはどうすればよいですか?

+0

を – noahlz

+0

はい、それ – marathon

答えて

11

module_assemblyにモジュールへの子参照がない場合は、モジュールとしてカウントされません。ここでのコンテンツは子供のみを指すことに注意してください。http://maven.apache.org/plugins/maven-assembly-plugin/advanced-module-set-topics.html

これを行うには、moduleSetではなくdependencySetを使用する必要があります。

PS - 賞金ありがとう! module_aがmodule_assembly のサブモジュールではないので

+0

しかし、dependencySetはjarファイルのみを含めることができますが、正しいですか?私が後にしているのは、いくつかの緩やかなxmlとプロパティファイルがsrcに浮遊していることです/ main/resources他のモジュール – marathon

+1

fileSetを使用して、非JARファイルを組み込むことができます。 –

1

何をしようとしていることは、動作しません。ここで

は、あなたが何ができるかのいくつかのアイデアです:

  • はジャーに関連するファイルを含める(多分ソースプラグインが役立ちます)とdependencySetを使用しています。
  • がmodule_assemblyが親であると module_parentmodule_aがサブモジュールであるように、あなたのモジュール構造を変更し
  • 。ソースの中で、依存関係の構造はそのままです。
  • 他のプロジェクトを指す相対パスを持つアセンブリ内のファイルセットを使用してください(醜い!)
2

私は同様のプロブレンを持っているので、アセンブリプラグインをデバッグしていただけで、問題は<useAllReactorProjects>true</useAllReactorProjects>だと思います。その上に、タグ<includeSubModules>もあります。これはおそらくあなたが望むものです。

2

それは、次の構成使用して私の仕事:?module_assembly用のpom.xmlが `<依存性>`スタンザにすなわちmodule_a(上の明示的な依存関係を持っています

<includeSubModules>false</includeSubModules> 
    <useAllReactorProjects>true</useAllReactorProjects> 
関連する問題