如何将env var arg传递给maven到shell脚本?

时间:2018-04-30 18:07:59

标签: maven

我正在使用exec插件从maven调用shell脚本,并希望将arg传递给我的maven命令,该命令将转发到shell脚本。所以如果我这样做

mvn exec:exec compile -Dfoo=bar

我希望能够使用$foo在我的shell脚本中访问foo。我已经尝试使用${env.foo}${foo}将它作为参数传递给pom.xml中的shell脚本,但我总是在shell脚本中使用那些确切的文字而不是“bar” ,foo也应该扩大。

我的pom.xml就像

<build>
  <plugins>
    <plugin>
      <artifactId>exec-maven-plugin</artifactId>
      <groupId>asdf</groupId>
      <version>1</version>
      <executions>
        <execution>
          <id>asdf</id>
          <phase>compile</phase>
          <goals>
            <goal>exec</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <executable>bash</executable>
        <commandlineArgs>myscript.sh ${env.foo}</commandlineArgs>
      </configuration>
     </plugin>
    </plugins>
  </build>

1 个答案:

答案 0 :(得分:1)

您可以使用argumentscommandlineArgs配置。

关键是你必须为foo提供一个值:

  • 在命令行上:-Dfoo=bar
  • 通过定义属性:<properties><foo>bar</foo></properties>

例如:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <configuration>
        <executable>bash</executable>
        <arguments>
            <argument>myscript.sh</argument> 
            <argument>${foo}</argument>
        </arguments>
    </configuration>
</plugin>

然后跑......

mvn exec:exec -Dfoo=bar

...将导致myscript.sh使用一个参数运行:foo

注意:您问题中的插件配置看起来不正确。特别; groupId(&#34; asdf&#34;)和version(1)。