如果参数化,maven-antrun-plugin不会在Linux上执行脚本

时间:2015-07-10 13:24:48

标签: maven maven-antrun-plugin

我有一些奇怪的情况,如果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上运行)?

谢谢!

0 个答案:

没有答案