如何将maven命令行参数传递给内联Groovy脚本

时间:2013-02-09 15:54:46

标签: maven groovy maven-release-plugin

我正在使用maven-release-plugin来发布一些工件。在release:perform目标期间,我想运行一个内联Groovy脚本,该脚本使用我的SCM凭据来执行某些任务。

这是我的pom.xml

的片段
...     
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <goals>
      clean
      deploy
      org.codehaus.gmaven:gmaven-plugin:execute
    </goals>
  </configuration>
</plugin>
<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.3</version>
  <executions>
    <execution>
      <id>default-cli</id>
      <goals>
        <goal>execute</goal>
      </goals>
      <configuration>
        <source>
           log.info "Username: ${project.properties.username} account"
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>
...

我按照以下方式调用Maven

mvn -B release:prepare release:perform -Dusername=foo -Dpassword=bar

我发出以下输出:

Username: null account

我试着查看官方GMaven页面,但似乎缺少一些片段......

有什么想法吗?


修改

我通过传递goals部分

中的凭据完成了
...     
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <goals>
      clean
      deploy
      org.codehaus.gmaven:gmaven-plugin:execute -Dusername=${username} -Dpassword=${password}
    </goals>
  </configuration>
</plugin>
...

命令行是一样的: mvn -B release:prepare release:perform -Dusername=foo -Dpassword=bar

正如@khmarbaise所说,似乎释放周期Maven是分叉的。我不确定它是否将所有命令行参数传递给分叉进程。所以这就像我强迫CLI参数的转发一样。

1 个答案:

答案 0 :(得分:2)

我建议使用maven-release-plugin的-Darguments=参数,因为在发布周期中maven会被分叉,这似乎是问题所在。

喜欢这个

mvn -B release:prepare release:perform -Darguments="-Dusername=foo -Dpassword=bar"

注意引号。