2012-10-10 46 views
4

鉴于以下依赖列入一个Maven的组装XML ...Maven的大会包括过滤

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

...为什么上面的过滤器不包括库:罐子不具有分类?

[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

我认为com.company.product:library*失败,因为你需要冒号:com.company.product:library:*(见this chapter from Maven: The Complete Reference)。

但是,我建议为您的两个配置文件(qa和non-qa)创建不同的component descriptors以用于这两个构建配置文件。一个列出了具有分类器的依赖关系,一个列出了没有分类器的依赖关系。

当然,XML文件和一些冗余内容会泛滥成灾,但它会解决您的问题。

+0

我曾试图过滤器上面还 - 它应该工作,但我得到了同样的错误,它似乎无法匹配与分类罐子。感谢组件描述符的建议,但我会研究它。 – RCross

7

在pom.xml中检查您的<dependencies>:您在assembly-xml中引用的依赖关系吗?

0

面对同样的问题。不知道为什么,但maven-assembly-plugin确实包括与compile范围是默认的依赖。使其成为provided修复组装。

E.g.检查您的com.company.product:library依赖关系,并尝试将<scope>provided</scope>添加到它们。然后,而不是*尝试列出所有图书馆人力。 (你也可以与他们的一个尝试,以检验溶液)

+1

'提供'不能解决我的问题 – mirec