我想从maven运行两个脚本,其中一个脚本依赖于环境变量。我正在尝试这样的事情:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
println "My script"
</source>
</configuration>
</execution>
</executions>
</plugin>
</build>
...
<profile>
<activation>
<property>
<name>env.MY_ENV_VAR</name>
<value>runStuff</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
println "My conditional script"
</source>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
当我运行“mvn validate”来测试它时,我会得到“我的脚本”。当我设置env变量并再次运行它时,我得到“我的条件脚本”但不“我的脚本”。似乎如果条件满足并且第二个条件运行,则第一个条件不会。
我只想在设置env变量时无条件地运行第一个和第二个。我想在脚本本身检查env变量,但根据this question,这似乎也有问题。
我是maven的新手,所以这不是一个简单的解决方案,但我没有看到它。
答案 0 :(得分:1)
我找到了答案。每次执行都必须具有唯一的ID。如果您没有指定ID,则两者都会获得“默认”。一旦我给了条件一个非默认ID,它们都会运行。
<build>
<plugins>
<plugin>
...
<executions>
<execution>
<id>Unconditional-script</id>
...
</execution>
</executions>
</plugin>
</build>
...
<profile>
...
<build>
<plugins>
<plugin>
...
<executions>
<execution>
<id>Conditional-script</id>
...
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>