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

如何使用Maven创建目录并复制JAR包及资源文件至指定目录

解决Maven迁移中自定义目录结构与文件复制的问题

方案1:使用maven-resources-plugin处理资源复制与目录创建

这个插件可以通过配置资源集,自动创建目标目录并复制指定文件,完美适配你的需求。在pom.xml中添加如下配置:

<build>
    <plugins>
        <!-- 复制自定义脚本资源到目标目录 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.3.1</version>
            <executions>
                <execution>
                    <id>copy-scripts</id>
                    <phase>install</phase> <!-- 和install阶段同步执行 -->
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>/usr/local/myFoo/spam/bar/scripts</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/foo/bar/scripts</directory>
                                <includes>
                                    <include>**/*</include> <!-- 递归复制所有文件和子目录 -->
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
                <!-- 编译生成的JAR包复制到Tomcat lib目录 -->
                <execution>
                    <id>copy-jar-to-tomcat</id>
                    <phase>install</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>/usr/local/tomcat/webapps/fooApp/WEB-INF/lib</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${project.build.directory}</directory>
                                <includes>
                                    <include>*.jar</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  • 关键配置说明:
    • phase设为install,确保和你提到的install mojo同步执行
    • directory指定源文件路径,outputDirectory为目标路径,插件会自动创建不存在的目录
    • includes用于筛选复制文件,**/*表示递归复制目录下所有内容

方案2:使用maven-antrun-plugin复用Ant原有逻辑

如果你之前的Ant脚本已经有成熟的目录创建和文件复制逻辑,可以直接在Maven中调用Ant任务,减少重新配置的工作量:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <id>run-custom-ant-tasks</id>
                    <phase>install</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <tasks>
                            <!-- 创建目标目录 -->
                            <mkdir dir="/usr/local/myFoo/spam/bar/scripts"/>
                            <mkdir dir="/usr/local/tomcat/webapps/fooApp/WEB-INF/lib"/>
                            <!-- 复制脚本文件 -->
                            <copy todir="/usr/local/myFoo/spam/bar/scripts">
                                <fileset dir="src/foo/bar/scripts" includes="**/*"/>
                            </copy>
                            <!-- 复制JAR包 -->
                            <copy todir="/usr/local/tomcat/webapps/fooApp/WEB-INF/lib">
                                <fileset dir="${project.build.directory}" includes="*.jar"/>
                            </copy>
                        </tasks>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  • 优势:直接沿用Ant的mkdir和copy任务,逻辑和原有Ant脚本完全一致,学习成本低

实用提示

  • 目标路径尽量使用Maven内置属性(如${user.home})代替硬编码,提升配置可移植性
  • 若需区分开发/生产环境,可结合Maven Profiles配置不同的目标路径
  • 执行mvn install时,插件会自动完成目录创建和文件复制,无需额外命令

内容的提问来源于stack exchange,提问作者RichardFeynman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:22:53