我试图使用Grails Maven插件来构建war文件。插件的一个已知问题是它不解决范围依赖性,我的项目pom文件必须包含范围依赖性。
依赖关系指定如下:
<dependency>
<groupId>mygroup</groupId>
<artifactId>myartifact</artifactId>
<version>[0.0.0,999.999.999)</version>
</dependency>
错误信息如下:
[错误]无法执行目标 org.grails:grails-maven-plugin:2.2.1:项目上的clean(default-clean) sdm:无法为Grails执行创建类路径。遇到 解决可执行文件的依赖关系的问题 它的执行。解决项目工件时出错:无法传输 artifact mygroup.myartifact:pom:[0.0.0,999.999.999)from / to myRepo (https://maven.mydomain/nexus/content/groups/myRepo): 项目的IllegalArgumentException mygroup.myartifact:pom:[0.0.0,999.999.999):路径中的非法字符 在索引89: HTTPS://maven.mydomain/nexus/content/groups/myRepo/mygroup/myartifact/ [0.0.0,999.999.999)/ myartifact- [0.0.0,999.999.999).pom - &GT; [帮助1]
如您所见,范围依赖关系未得到解决,文字版本为&#34; [0.0.0,999.999.999)&#34;正在寻找。
要解决此问题,我可以使用Maven版本插件执行此操作:
但是这就是我的问题:如果我将这些目标合并到一个Maven命令中:
mvn versions:resolve-ranges grails:war versions:revert
grails:war失败并出现上面描述的错误 - 它似乎看到pom文件处于初始状态(具有范围依赖性),即使版本插件已使用实际版本号更新了pom文件。失败后,pom文件包含:
<dependency>
<groupId>mygroup</groupId>
<artifactId>myartifact</artifactId>
<version>2.1.15</version>
</dependency>
所以我的问题是 - 为什么第二个目标(grails:war)会看到pom文件,因为它是在整个目标链的开始,而不是在目标运行时?我怎样才能使第二个目标(grails:war)看到第一个目标完成后的pom文件(版本:resolve-ranges)?