Java maven assembly plugin moduleset sources说明不包含任何文件,并且与包含的模块不匹配

Java maven assembly plugin moduleset sources说明不包含任何文件,并且与包含的模块不匹配,java,maven,maven-assembly-plugin,Java,Maven,Maven Assembly Plugin,我有一个多模块maven项目,我正在尝试让组装插件的模块集源代码部分工作 我有模块“模块\u父级””、“模块\u a”和“模块\u组件”” 模块a和模块U组件是模块U父级的子级 模块_组件已声明pom依赖于模块_a 模块\u assmebly具有assembly插件,其assembly.xml如下所示: 箱子 拉链 假的 真的 com.mystuff:module_a / **/目标/** / 我在模块_assembly中对模块_a有显式依赖关系。模块组件的pom中的依赖项如下所示: co

我有一个多模块maven项目,我正在尝试让组装插件的模块集源代码部分工作

我有模块“模块\u父级””、“模块\u a”和“模块\u组件”

模块a模块U组件模块U父级的子级

模块_组件已声明pom依赖于模块_a

模块\u assmebly具有assembly插件,其assembly.xml如下所示:


箱子
拉链
假的
真的
com.mystuff:module_a
/
**/目标/**
/
我在模块_assembly中对模块_a有显式依赖关系。模块组件的pom中的依赖项如下所示:


com.mystuff
模块a
1
聚甲醛
我从启用调试的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.

如何更正此问题?

如果模块\u程序集没有对您的模块的子引用,则不将其计为模块。注:此处的内容仅指儿童:

如果要执行此操作,需要使用dependencySet而不是moduleSet


PS-谢谢你的赏金

您尝试的方法无效,因为模块a不是模块组件的子模块

以下是您可以做的一些想法:

  • 将相关文件包括到jar中(可能源插件有帮助)并使用dependencySet
  • 更改模块结构,使模块组件为父模块,模块父模块模块a为子模块。当然,依赖结构保持原样
  • 只需在程序集中使用具有指向其他项目的相对路径的文件集(丑陋!)

我刚刚调试了汇编插件,因为我有一个类似的问题,我认为问题是
正确的
。除此之外,还有标签
,这可能就是您想要的

<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

箱子
拉链
假的
假的
正确>
...

它使用以下配置对我有效:

  <includeSubModules>false</includeSubModules>
  <useAllReactorProjects>true</useAllReactorProjects>
false
真的

是的,它确实有明确的依赖关系。我在上面的第二组“代码”格式中包含了它,但是dependencySet只允许包含jar文件,对吗?我想要的是在其他模块的src/main/resources中浮动的一些松散的xml和属性文件。
  <includeSubModules>false</includeSubModules>
  <useAllReactorProjects>true</useAllReactorProjects>