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

Maven多模块项目:构建后删除mod1的target文件夹方案咨询

解决方案

一、配置mod1构建后自动删除target文件夹

Maven的maven-clean-plugin可以在指定阶段执行清理操作,我们需要确保mod1先完成打包、安装到本地仓库(保证mod2能正常获取依赖),再清理target目录。修改mod1的pom.xml,在<build>标签中添加以下配置:

<build>
    <plugins>
        <!-- 若mod1无需打包成可执行Jar,可移除spring-boot-maven-plugin -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- 绑定clean操作到install之后的阶段 -->
        <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.3.2</version>
            <executions>
                <execution>
                    <id>post-install-clean</id>
                    <phase>post-install</phase>
                    <goals>
                        <goal>clean</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

说明:post-install阶段在Maven的install流程完成后触发,此时mod1的Jar已被安装到本地仓库,mod2后续构建可正常引用,同时mod1的target文件夹会被自动删除。

二、配置mod2将mod1的Jar复制到自身lib目录

1. 先添加mod1依赖

在mod2的<dependencies>节点中引入mod1的依赖:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>library-complete</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

2. 添加依赖复制插件配置

在mod2的<build>标签中加入maven-dependency-plugin,实现Jar复制:

<build>
    <plugins>
        <!-- 保留原有插件(如spring-boot-maven-plugin) -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.6.0</version>
            <executions>
                <execution>
                    <id>copy-mod1-jar</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.example</groupId>
                                <artifactId>library-complete</artifactId>
                                <version>0.0.1-SNAPSHOT</version>
                                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

说明:执行mvn package时,mod1的Jar会被自动复制到mod2的target/lib目录下。

三、执行构建命令

在父项目根目录运行以下命令:

mvn clean install

此时:

  • mod1会先完成打包、安装到本地仓库,随后自动清理target文件夹
  • mod2会拉取mod1的依赖,并将其Jar复制到自身的lib目录中

注意:若不需要将mod1安装到本地仓库,也可使用maven-dependency-plugin的copy-dependencies目标结合多模块 reactor 构建,但安装到本地仓库是最稳妥的方式,能避免模块间依赖路径问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:40:32