如何配置Maven在JAR打包后自动将生成文件多副本输出到不同文件夹
Maven自动分发构建产物到测试服目录配置方案
无需修改IDE配置,通过pom.xml绑定Maven插件到打包阶段,即可在mvn package完成后自动将生成的JAR包复制到所有指定的测试服plugins目录,无额外手动操作。
前置准备
- 确认所有目标测试服plugins目录的绝对路径,Windows、Linux环境路径均支持
- 提前创建所有目标plugins目录,避免复制任务失败
具体配置步骤
1. 定义路径变量(推荐配置,便于后续维护)
在pom.xml的<properties>节点下新增自定义变量,后续调整分发路径仅需修改该节点内容:
<properties> <!-- 替换为你实际的测试服插件目录路径 --> <test.server.lobby.plugins>D:/mc-test/lobby/plugins</test.server.lobby.plugins> <test.server.survival.plugins>D:/mc-test/survival/plugins</test.server.survival.plugins> <test.server.bungee.plugins>D:/mc-test/bungee/plugins</test.server.bungee.plugins> <!-- 自动匹配构建生成的JAR路径,无需手动修改 --> <generated.plugin.jar>${project.build.directory}/${project.build.finalName}.jar</generated.plugin.jar> </properties>
2. 配置自动复制插件
在pom.xml的<build><plugins>节点下新增maven-antrun-plugin配置,绑定到package阶段触发执行:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <!-- 按需新增/删除copy行,对应需要分发的目标目录 --> <copy file="${generated.plugin.jar}" todir="${test.server.lobby.plugins}" /> <copy file="${generated.plugin.jar}" todir="${test.server.survival.plugins}" /> <copy file="${generated.plugin.jar}" todir="${test.server.bungee.plugins}" /> <!-- 可选:复制前删除目标目录下的旧版JAR,避免版本冲突 --> <!-- <delete file="${test.server.lobby.plugins}/${project.build.finalName}.jar" /> --> </target> </configuration> </execution> </executions> </plugin>
使用规则
- 配置完成后执行原有
mvn package命令,或在IntelliJ Maven面板双击Lifecycle下的package,打包完成后会自动触发复制逻辑 - 临时不需要自动分发时,可执行
mvn package -Dantrun.skip=true跳过复制任务,仅生成target目录下的JAR - 若目标路径包含空格或中文,需在路径外补充双引号,例如
todir="D:/我的测试服/lobby/plugins"
注意事项
- 不要硬编码JAR文件名,使用
${project.build.finalName}变量会自动匹配pom中配置的最终打包名,修改artifactId、version或finalName时无需调整分发配置 - Windows环境路径直接使用正斜杠
/即可,无需转义反斜杠\ - 若出现权限不足报错,检查Maven运行账号对目标目录是否有读写权限
内容的提问来源于stack exchange,提问作者leisheng
相关产品推荐
相关产品推荐

