3

Windows 7 と ubuntu 13.04 の両方で Maven プロジェクトを動作させようとしています。pom.xml ファイルでは、maven-antrun-plugin を使用 して、Linux と Windows マシンの両方にインストールしたsconsを呼び出します。両方のOSでscons、shell/cmdから実行できることを確認したので、PATH上にあります。ポンは次のようになります。

            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>run-scons</id>
                        <phase>generate-resources</phase>
                        <configuration>
                            <target name="run-scons">
                                <exec executable="scons" dir="${basedir}/../../../" failonerror="true">
                                    <arg value="-j4" />
                                </exec>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

しかし、windows7 でビルドすると、次のようになります。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (run-scons) on project my-project: An Ant BuildExcept
ion has occured: Execute failed: java.io.IOException: Cannot run program "scons" (in directory "C:\Users\u\samples"): CreateProcess error=2,
The system cannot find the file specified
[ERROR] around Ant part ...<exec dir="C:\Users\u\samples...." executable="scons" failonerror="true">

cmd を開いてそこから実行すると、次のようになります。

C:\Users\u\samples\>scons
scons: Reading SConscript files ...
Using configuration: scons/win32mscdbg.py

sconsantrun プラグインから呼び出せないのはなぜですか? Windows で scons へのフル パスを指定すると動作します (例: C:\Python26\Scripts\scons.bat)。彼ら自身。

4

2 に答える 2

2

maven exec プラグインは違いを生むでしょうか?

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <id>run-scons</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <executable>scons</executable>
                <workingDirectory>${basedir}/../../../</workingDirectory>
                <arguments>
                    <argument>-j4</argument>
                </arguments>
            </configuration>
        </plugin>

これをテストすることはできませんが、bat ファイルを引数としてシェルを実行する ant とは対照的に、maven でbat ファイル ( 12 ) を「実行可能ファイル」として実行できるようです ( win users の下でここを読んでください)。リンクされた例はすべて絶対パスを使用していますが、これはあなたのケースではありません。試してフィードバックすることをお勧めします。

于 2013-09-13T14:30:59.580 に答える
0

このアプローチは、他のコマンドでうまくいきました。

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <id>run-scons</id>
      <phase>generate-resources</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <target>
          <!-- TODO: fill in the correct os property value -->
          <exec executable="scons" dir="${basedir}/../../../" failonerror="true" 
                os="<os.name property value for Ubuntu>"
            <arg value="-j4" />
          </exec>

          <exec executable="cmd" dir="${basedir}/../../../" failonerror="true" 
                os="Windows 7"
            <arg line="/C scons /> 
            <arg value="-j4" />  <!-- /j4 on windows?  never used scons -->
          </exec>
        </target>
      </configuration>
    </execution>
  </executions>
</plugin>
于 2013-09-13T18:28:22.053 に答える