如何通过Intellij运行配置将Maven模块生成的jar安装到本地.m2仓库
解决方案
优先推荐使用方案1,无需处理任何路径和属性读取,仅一行命令即可解决问题
方案1:命令行覆盖install插件跳过配置
Maven命令行参数的优先级高于pom文件内的配置,你可以直接在module1的构建步骤后追加如下命令,强制执行install操作,会自动读取pom内的所有坐标、版本信息,将target下的jar安装到本地.m2仓库:
# 切换到module1目录下执行 mvn install -Dmaven.install.skip=false
如果是在项目根目录执行,可以单独指定module1运行:
mvn -pl module1 install -Dmaven.install.skip=false
调整后的Intellij运行配置步骤:
- 构建module1
- 执行上述强制安装命令
- 构建module2
- 启动服务
方案2:动态读取pom属性执行install-file
如果需要自定义安装逻辑,你可以通过Maven的help插件动态读取pom中的属性,不需要硬编码版本、坐标等信息:
Linux/macOS环境命令
# 切换到module1目录下执行 # 读取pom属性 GROUP_ID=$(mvn help:evaluate -Dexpression=project.groupId -q -DforceStdout) ARTIFACT_ID=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout) VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) JAR_PATH=target/${ARTIFACT_ID}-${VERSION}.jar # 安装jar到本地仓库 mvn install:install-file -Dfile=${JAR_PATH} -DgroupId=${GROUP_ID} -DartifactId=${ARTIFACT_ID} -Dversion=${VERSION} -Dpackaging=jar
Windows CMD环境命令
:: 切换到module1目录下执行 :: 读取pom属性 for /f "delims=" %%i in ('mvn help:evaluate -Dexpression=project.groupId -q -DforceStdout') do set GROUP_ID=%%i for /f "delims=" %%i in ('mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout') do set ARTIFACT_ID=%%i for /f "delims=" %%i in ('mvn help:evaluate -Dexpression=project.version -q -DforceStdout') do set VERSION=%%i set JAR_PATH=target/%ARTIFACT_ID%-%VERSION%.jar :: 安装jar到本地仓库 mvn install:install-file -Dfile=%JAR_PATH% -DgroupId=%GROUP_ID% -DartifactId=%ARTIFACT_ID% -Dversion=%VERSION% -Dpackaging=jar
两种方案均不需要修改pom.xml文件,所有调整都可以在Intellij运行配置中完成,符合遗留架构的要求。
内容的提问来源于stack exchange,提问作者Mirhawk
相关产品推荐
相关产品推荐

