Как я могу передать env var arg в maven до сценария оболочки? - PullRequest
0 голосов
/ 30 апреля 2018

Я использую плагин exec для вызова сценария оболочки из maven и хочу передать arg моей команде maven, которая будет перенаправлена ​​в сценарий оболочки. Так что, если я сделаю

mvn exec:exec compile -Dfoo=bar

Я бы хотел иметь возможность доступа к foo в моем скрипте оболочки с помощью $foo. Я попытался передать его в качестве параметра в сценарий оболочки из pom.xml, используя ${env.foo} и ${foo}, но я всегда просто получаю эти точные литералы в сценарии оболочки вместо "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 голосов
/ 01 мая 2018

Вы можете использовать конфигурации arguments или commandlineArgs.

Ключевым моментом является то, что вы должны предоставить значение для 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 ("asdf") и version (1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...