maven-assembly-plugin报错:尝试处理项目不存在的虚拟第二个assembly.xml
第二个assembly配置的来源
你看到的第二个非自定义的assembly配置是maven-assembly-plugin的内置预定义bin描述符,触发原因是你的项目POM中,maven-assembly-plugin的配置同时加载了两类描述符:
- 你手动指定的自定义描述符
../assembly.xml - 配置中保留了
<descriptorRefs><descriptorRef>bin</descriptorRef></descriptorRefs>段落,触发了内置bin描述符的加载
两个描述符的id均为bin,对应日志中The assembly id bin is used more than once的警告。内置描述符要求将target/site目录下的站点文件打包到压缩包的docs路径,如果你没有提前执行mvn site命令生成对应目录的文件,内置描述符对应的打包任务就会找不到可打包的内容,最终抛出archive cannot be empty错误,此时你自定义描述符生成的tar.gz文件已经正常生成,但整体构建被标记为失败。
解决方案
永久修复(推荐)
修改项目POM中maven-assembly-plugin的配置,删除<descriptorRefs>相关的配置段落,仅保留你自定义描述符的配置即可,配置示例如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <descriptors> <!-- 仅保留你的自定义描述符路径 --> <descriptor>../assembly.xml</descriptor> </descriptors> <!-- 删除descriptorRefs相关配置 --> </configuration> </plugin>
修改后重新执行mvn assembly:single即可正常完成构建。
临时修复
如果不想修改POM,执行命令时指定仅加载自定义描述符即可:
mvn assembly:single -Dassembly.descriptors=../assembly.xml
内容的提问来源于stack exchange,提问作者Toribio73
相关产品推荐
相关产品推荐

