Maven和多个目标

时间:2013-05-23 17:48:52

标签: maven grails plugins dependencies

我试图使用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版本插件执行此操作:

  1. mvn版本:resolve-ranges [用实际版本替换pom文件中的范围deps]
  2. mvn grails:war [基于新修改的pom文件中的实际版本构建战争]
  3. mvn版本:还原 [将pom文件恢复为原始状态]
  4. 但是这就是我的问题:如果我将这些目标合并到一个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)?

0 个答案:

没有答案