如何消除Maven Assembly Plugin生成的额外Artifact-Version目录?
解决maven-assembly-plugin生成额外Artifact-Version目录的问题
问题原因
使用dir格式生成目录时,maven-assembly-plugin默认会以项目的finalName(格式为Artifact-Version)作为基础目录,即便配置了<includeBaseDirectory>false</includeBaseDirectory>,这个默认行为仍会触发,导致在目标输出目录下多一层不必要的层级。
解决方法
在你的assembly.xml配置中添加<baseDirectory/>元素(设为空值),明确指定基础目录为空,即可避免生成额外的目录层级。
修改后的assembly.xml配置
<assembly ...> <id>deps-assembly</id> <formats> <format>dir</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <!-- 添加空的baseDirectory元素,取消默认基础目录 --> <baseDirectory/> <dependencySets> <dependencySet> <includes> <include> dep1-groupid:dep1-artifactid </include> </includes> <outputDirectory>dep1</outputDirectory> <useTransitiveDependencies>true</useTransitiveDependencies> <useTransitiveFiltering>true</useTransitiveFiltering> <useProjectArtifact>false</useProjectArtifact> <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping> </dependencySet> <dependencySet> <includes> <include> dep2-groupid:dep2-artifactid </include> </includes> <outputDirectory>dep2</outputDirectory> <useTransitiveDependencies>true</useTransitiveDependencies> <useTransitiveFiltering>true</useTransitiveFiltering> <useProjectArtifact>false</useProjectArtifact> <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping> </dependencySet> </dependencySets> </assembly>
验证效果
修改完成后,执行mvn package命令,插件会直接将依赖输出到${project.basedir}/dependencies/dep1和${project.basedir}/dependencies/dep2目录下,符合预期路径。
内容的提问来源于stack exchange,提问作者Djoz
相关产品推荐
相关产品推荐

