6

鉴于以下依赖项包含一个 Maven 程序集 XML...

<dependencySet>
  <includes>
    <include>com.company.product:library:jar:*:*</include>
  </includes>

...为什么上述过滤器无法包含没有分类器的 library: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]

有人可以建议一种模式,包括有或没有分类器的罐子吗?

4

4 回答 4

11

检查你<dependencies>的 pom.xml:你在 assembly-xml 中引用的依赖项也在那里吗?

于 2015-09-16T09:27:55.097 回答
2

面临同样的问题。不知道为什么,但maven-assembly-plugin包括默认范围的依赖项。将其作为修复组装。compileprovided

例如,检查您的com.company.product:library依赖项并尝试添加<scope>provided</scope>它们。然后,不要*尝试手动列出所有库。(您也可以尝试其中一个来检查解决方案)

于 2016-04-18T13:13:35.897 回答
2

我最近在使用maven-assembly-plugin(版本 3.3.0)时遇到了同样的情况。我用来解决它的步骤是:

于 2020-06-30T16:31:03.727 回答
0

我认为com.company.product:library*失败是因为您需要冒号:(com.company.product:library:*请参阅Maven 中的本章:完整参考)。

但是,我建议不要为您的两个配置文件(qa 和非 qa)创建不同的组件描述符,而不是针对这些通配符,为这两个构建配置文件创建不同的组件描述符。一种列出具有分类器的依赖关系,一种列出没有分类器的依赖关系。

诚然,XML 文件和一些冗余内容将会激增,但它会解决您的问题。

于 2012-10-10T20:27:54.887 回答