繁体   English   中英

maven-assembly-plugin和jar名称冲突

[英]maven-assembly-plugin and jar name conflict

我有一个带有两个依赖项(第三方库)的项目,不幸的是它们的名称和版本是相同的:

pom.xml中:

<dependencies>
    <dependency>
        <groupId>a</groupId>
        <artifactId>artifact</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>b</groupId>
        <artifactId>artifact</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

两个依赖项具有相同的artifactIdversion ,但具有不同的groupId

我需要为我的项目创建一个分发包。 必须将所有依赖项复制到lib/文件夹。 这是maven-assembly-plugin ,assembly.xml的最小配置:

<id>package</id>
<formats>
    <format>dir</format>
</formats>
<baseDirectory>/</baseDirectory>
<dependencySets>
    <dependencySet>
        <outputDirectory>lib</outputDirectory>
    </dependencySet>
</dependencySets>

因此,两个依赖项都应该复制到zip存档的lib/内部,但实际上只有一个工件:

$ find target/project-1.0-SNAPSHOT-package/
target/project-1.0-SNAPSHOT-package/
target/project-1.0-SNAPSHOT-package/lib
target/project-1.0-SNAPSHOT-package/lib/artifact-1.0-SNAPSHOT.jar

作为可能的解决方案之一,jar文件名应包含groupId - 然后名称冲突应该消失。

所以问题是:如何配置maven-assembly-plugin (或其他一些插件)以将两个依赖项都包含在我的分发存档中?

尝试在依赖关系集中设置outputFileNameMapping以包含组ID:

<dependencySets>
   <dependencySet>
       <outputDirectory>lib</outputDirectory>
       <outputFileNameMapping>${artifact.groupId}-${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
   </dependencySet>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM