You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

maven-dependency-plugin:useSubDirectoryPerArtifact不受useBaseVersion影响的解决咨询

Maven Dependency Plugin:让unpack-dependencies的子目录使用BaseVersion而非Timestamp版本

问题场景

期望将指定依赖解压到以artifactId-baseVersion-type命名的独立目录,例如:

  • target/unpacked/artifactA-1.0-SNAPSHOT-war/contentA
  • target/unpacked/artifactB-2.0-SNAPSHOT-ear/contentB

但当前配置下,useSubDirectoryPerArtifact生成的子目录会使用带timestamp的Snapshot版本号(如artifactA-1.0-timestampXXX-war),仅解压后的工件文件名受useBaseVersion控制。


解决方案(无需手动解压)

核心思路是利用Maven依赖处理时暴露的artifact对象属性,直接指定子目录的命名规则,替代默认的resolved版本号。

方案1:通过subDirectory参数定义子目录格式

保留useSubDirectoryPerArtifact,添加subDirectory参数明确指定目录命名规则:

<execution>
    <id>unpack-applications</id>
    <phase>generate-resources</phase>
    <goals>
        <goal>unpack-dependencies</goal>
    </goals>
    <configuration>
        <includeArtifactIds>artifactA,artifactB</includeArtifactIds>
        <includeTypes>war,ear</includeTypes>
        <outputDirectory>target/unpacked</outputDirectory>
        <useSubDirectoryPerArtifact>true</useSubDirectoryPerArtifact>
        <subDirectory>${artifact.artifactId}-${artifact.baseVersion}-${artifact.type}</subDirectory>
        <useBaseVersion>true</useBaseVersion>
    </configuration>
</execution>

方案2:在outputDirectory中嵌入动态表达式

去掉useSubDirectoryPerArtifact,直接通过outputDirectory的动态表达式为每个依赖分配独立目录:

<execution>
    <id>unpack-applications</id>
    <phase>generate-resources</phase>
    <goals>
        <goal>unpack-dependencies</goal>
    </goals>
    <configuration>
        <includeArtifactIds>artifactA,artifactB</includeArtifactIds>
        <includeTypes>war,ear</includeTypes>
        <outputDirectory>target/unpacked/${artifact.artifactId}-${artifact.baseVersion}-${artifact.type}</outputDirectory>
        <useBaseVersion>true</useBaseVersion>
    </configuration>
</execution>

效果说明

两种方案均通过${artifact.baseVersion}获取不带timestamp的BaseVersion值(如1.0-SNAPSHOT),最终生成的目录结构完全符合预期,无需额外手动解压或重命名操作。

内容的提问来源于stack exchange,提问作者Clément Honoré

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:55:47