我有一些奇怪的情况,如果maven-antrun-plugin设置为属性(并且在maven配置文件中),它不会执行脚本。
此版本不执行脚本(没有错误):
<profile>
<id>sonar</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>build</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<condition property="buildScript" value="b2e-build-sonar.bat" else="b2e-build-sonar.sh">
<os family="windows"/>
</condition>
<chmod file="${project.basedir}/${buildScript}" perm="ugo+rx"/>
<echo>Starting Grunt build in ${project.basedir} using ${buildScript}</echo>
<exec executable="${project.basedir}/${buildScript}" failonerror="true" output="antrun-sonar.log" spawn="false" failifexecutionfails="true">
<env key="SONAR_HOST" value="${sonar.host.url}" />
<env key="SONAR_JDBC_URL" value="${sonar.jdbc.url}" />
<env key="SONAR_JDBC_USERNAME" value="${sonar.jdbc.username}" />
<env key="SONAR_JDBC_PASSWORD" value="${sonar.jdbc.password}" />
<env key="SONAR_SCM_URL" value="${project.scm.connection}" />
<env key="SONAR_PROJECT_KEY" value="${project.artifactId}" />
<env key="SONAR_PROJECT_VERSION" value="${project.version}" />
</exec>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
正确显示回显消息。 这位高管并没有发生。 Windows上的相同任务运作良好。
所以我将配置更改为:
<profile>
<id>sonar</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>build</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<chmod file="${project.basedir}/b2e-build-sonar.sh" perm="ugo+rx"/>
<echo>Starting Grunt build in ${project.basedir} (Unix Only)</echo>
<exec executable="${project.basedir}/b2e-build-sonar.sh" failonerror="true" osfamily="unix">
<env key="SONAR_HOST" value="${sonar.host.url}" />
<env key="SONAR_JDBC_URL" value="${sonar.jdbc.url}" />
<env key="SONAR_JDBC_USERNAME" value="${sonar.jdbc.username}" />
<env key="SONAR_JDBC_PASSWORD" value="${sonar.jdbc.password}" />
<env key="SONAR_SCM_URL" value="${project.scm.connection}" />
<env key="SONAR_PROJECT_KEY" value="${project.artifactId}" />
<env key="SONAR_PROJECT_VERSION" value="${project.version}" />
</exec>
<echo>ANT execution done.</echo>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
主要是在没有条件的情况下直接调用脚本。这确实也在linux上执行脚本。
为什么相同的脚本作为不在unix上运行的属性(但在Windows上运行)?
谢谢!