Maven Assembly包括过滤

时间:2012-10-10 15:57:23

标签: maven maven-assembly-plugin

鉴于以下依赖项包含一个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]

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

4 个答案:

答案 0 :(得分:7)

检查pom.xml中的<dependencies>:你在assembly-xml中引用的依赖关系是什么?

答案 1 :(得分:2)

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

答案 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文件和一些冗余内容,但它会解决您的问题。