鉴于以下依赖项包含一个Maven程序集XML ...
<dependencySet>
<includes>
<include>com.company.product:library:jar:*:*</include>
</includes>
...为什么上面的过滤器无法包含库:没有分类器的jar?
[INFO] Reading assembly descriptor: assembly/release.xml
[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o 'com.company.product:library:jar:*:*'
在我的模式中添加通配符的原因是我还有一个配置文件使用分类器“qa”构建我的所有库。当我激活该配置文件时,一切正常,但在默认配置文件(构建没有分类器的库)下,它会失败。
如果我将过滤器更改为:
<include>com.company.product:library*</include>
然后maven构建实际上失败了,出现了这个错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-
plugin:2.3:single (make-assembly) on project java-package: Failed to create
assembly: Error adding file 'com.company.product:library:jar:1.0.0-SNAPSHOT'
to archive: C:\Subversion\JavaProj\library\target\classes isn't a file. -> [Help 1]
有人可以建议一个包含有或没有分类器的罐子的模式吗?
答案 0 :(得分:7)
检查pom.xml中的<dependencies>
:你在assembly-xml中引用的依赖关系是什么?
答案 1 :(得分:2)
我最近在使用 maven-assembly-plugin (版本3.3.0)时遇到了相同的情况。 我用来解决该问题的步骤是:
<scope>provided</scope>
dependencySet
中:
<includes><include>[groupId]:[artifactId]:jar</include></includes>
以匹配依赖项<scope>provided</scope>
(因为默认情况下 scope = runtime 参见https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html#class_dependencySet)答案 2 :(得分:1)
面临同样的问题。不知道为什么,但maven-assembly-plugin
不包含compile
范围内的默认依赖关系。将其设为provided
可以修复组装。
E.g。检查您的com.company.product:library
依赖项并尝试向其添加<scope>provided</scope>
。然后,而不是*
尝试手动列出所有库。 (您也可以尝试其中一个来检查解决方案)
答案 3 :(得分:0)
我相信com.company.product:library*
失败是因为您需要冒号:com.company.product:library:*
(请参阅this chapter from Maven: The Complete Reference)。
但是,我建议您为两个构建配置文件为两个配置文件(qa和非qa)创建不同的component descriptors,而不是对这些通配符进行敲击。一个列出了具有分类器的依赖项,一个列出了没有分类器的依赖项。
当然,会有大量的XML文件和一些冗余内容,但它会解决您的问题。