在 Spring Boot 微服务项目中,比如各业务微服务模块由于不存在相互依赖度的问题,因此执行maven install时无需安装到本地仓库,但仍然需要参与构建(如 mvn compile 或 mvn package)。公共模块(如辅助工具模块、实体模块、通用模块等)既要参与构建也需要被安装到 Maven 本地仓库(~/.m2/repository)。
方法 1:使用 maven-install-plugin 的 skip 配置
在 pom.xml 中配置 maven-install-plugin,并设置 skip=true:
bash
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<skip>true</skip> <!-- 跳过 install 阶段 -->
</configuration>
</plugin>
</plugins>
</build>
方法 2:使用 Maven 属性动态控制
结合 Maven 属性(如 -DskipInstall)动态控制是否跳过安装:
在 pom.xml 中配置:
bash
<properties>
<skip.install>false</skip.install> <!-- 默认不跳过 -->
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<skip>${skip.install}</skip> <!-- 通过属性控制 -->
</configuration>
</plugin>
</plugins>
</build>
通过命令行动态跳过:
bash
mvn install -Dskip.install=true # 跳过安装
mvn install # 正常安装
方法 3:使用 maven-deploy-plugin 跳过部署
如果目标是跳过部署到远程仓库(如 Nexus),可以配置 maven-deploy-plugin:
bash
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<skip>true</skip> <!-- 跳过 deploy 阶段 -->
</configuration>
</plugin>
方法 4:通过 Profile 按环境控制
通过 Maven Profile 区分不同环境:
bash
<profiles>
<profile>
<id>skip-install</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
通过命令行激活:
bash
mvn install -Pskip-install # 跳过安装
注意事项
1、模块间依赖:如果其他模块依赖该模块,跳过安装可能导致编译失败。此时建议:
改用 Maven 聚合项目(),在父 POM 中统一管理。
通过 mvn install -pl -am 仅安装特定模块及其依赖。
2、替代方案:如果只是不想污染本地仓库,可以:
使用 mvn package 只打包不安装。
通过 Docker 或 CI/CD 直接构建镜像,避免本地安装。