Maven Assembly包括过滤

RCr*_*oss 5 maven maven-assembly-plugin

给定以下依赖项包含一个Maven程序集XML ...

<dependencySet>
  <includes>
    <include>com.company.product:library:jar:*:*</include>
  </includes>
Run Code Online (Sandbox Code Playgroud)

...为什么上面的过滤器不能包含库: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:*:*'
Run Code Online (Sandbox Code Playgroud)

在我的模式中添加通配符的原因是我还有一个配置文件,用分类器"qa"构建我的所有库.当我激活该配置文件时,一切正常,但在默认配置文件(构建没有分类器的库)下,它会失败.

如果我将过滤器更改为:

<include>com.company.product:library*</include>
Run Code Online (Sandbox Code Playgroud)

然后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]
Run Code Online (Sandbox Code Playgroud)

有人可以建议一个包含罐子的模式,无论是否有分类器?

Gam*_*tic 8

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


noa*_*hlz 0

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

然而,我建议不要为这些通配符而苦恼,而是为两个构建配置文件创建不同的组件描述符- qa 和非 qa。一种列出具有分类器的依赖项,一种列出没有分类器的依赖项。

当然,将会出现大量的 XML 文件和一些冗余内容,但它会解决您的问题。