IntelliJ中Maven父项目groupId使用变量报错及release发布失败问题求助
IntelliJ中Maven父项目groupId使用变量报错及release发布失败问题求助
大家好,我遇到了一个Maven结合IntelliJ使用的棘手问题,折腾了好一阵都没搞定,来向各位求助!
我的环境配置:
- Windows 11
- IntelliJ Ultimate 2024.1.2(旗舰版)
- Maven 3.9.1
我维护的是一个多模块Maven项目,结构如下:
myApp |- myApp.war |- myApp.ear |- myApp.service
目前能正常工作的部分
在根项目myApp的pom.xml里,我定义了环境属性:
<environment>env1</environment>
同时根项目的groupId使用了这个变量,IntelliJ里没有任何红色波浪线提示,完全正常:
<groupId>com.example.projName-${environment}</groupId> <!-- 这里一切正常 -->
子项目(myApp.war、myApp.ear、myApp.service)的自身groupId和artifactId使用变量也都没问题,没有任何语法警告。
遇到的两个核心问题
1. IntelliJ编辑器的红色警告
所有子项目的pom.xml都需要引用父项目,可我在<parent>节点里给groupId使用变量时:
<parent> <groupId>com.example.projName-${environment}</groupId> <!-- 这里出现红色波浪线 --> <artifactId>myApp</artifactId> <version>1.0.0</version> </parent>
鼠标悬停上去会弹出提示:Properties in parent definition are prohibited.
2. Maven Release插件执行失败
虽然本地执行mvn clean install和mvn deploy(部署快照版本)都能成功,但执行mvn release:prepare发布正式版本时直接报错,日志如下:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:3.0.1:prepare (default-cli) on project myApp: Can't release project due to non released dependencies : [ERROR] com.example.myapp-${environment}:myapp:pom:1.0.1-SNAPSHOT [ERROR] in project 'myapp-war' (com.example.myapp-env1:myapp-war:war:1.0.1-SNAPSHOT)
我的需求背景
我这么做的目的是想让所有模块根据环境变量,推送到Nexus对应命名的仓库目录下,比如projName-staging、projName-qa这类不同的路径,所以才需要在groupId里带上环境变量标识。
有没有办法既能实现这个仓库路径区分的需求,又能解决IntelliJ的警告和Release插件的报错呢?麻烦各位大佬支支招!
备注:内容来源于stack exchange,提问作者pixel
相关产品推荐
相关产品推荐

