Java maven assembly plugin moduleset sources说明不包含任何文件,并且与包含的模块不匹配
我有一个多模块maven项目,我正在尝试让组装插件的模块集源代码部分工作 我有模块“模块\u父级””、“模块\u a”和“模块\u组件”” 模块a和模块U组件是模块U父级的子级 模块_组件已声明pom依赖于模块_a 模块\u assmebly具有assembly插件,其assembly.xml如下所示: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
箱子
拉链
假的
真的
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>