如何将Maven多模块项目的最终构建产物输出到项目根目录
解决方案
要将maven-assembly-plugin生成的zip包输出到项目根目录或其他指定位置,仅需修改packaging模块pom.xml中assembly插件的配置即可,具体操作如下:
方法一:直接指定assembly插件输出路径
在maven-assembly-plugin的<configuration>节点下新增<outputDirectory>配置,指定压缩包的输出目录。由于当前配置位于packaging模块下,相对路径../即对应项目根目录,也可填写自定义绝对路径:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>${maven-assembly-plugin.version}</version> <configuration> <!-- 新增配置指定输出目录,../对应项目根目录,可替换为任意目标路径 --> <outputDirectory>${project.basedir}/../</outputDirectory> <!-- 可选配置:自定义压缩包名称,关闭assemblyid后缀 --> <finalName>final-archive</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>install</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
添加上述配置后,执行构建会直接在项目根目录生成final-archive.zip文件。
方法二:打包完成后拷贝产物(可选)
如果需要同时在packaging模块的target目录下保留产物备份,可添加maven-antrun-plugin插件,在install阶段将生成的zip包拷贝到目标位置,配置参考:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <phase>install</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <copy file="${project.build.directory}/${project.build.finalName}-packaging-assembly.zip" todir="${project.basedir}/../" /> </tasks> </configuration> </execution> </executions> </plugin>
内容的提问来源于stack exchange,提问作者Omegaspard
相关产品推荐
相关产品推荐

