2

編集2:問題を見つけました。簡単な答えは<id>、新しく構成した実行のが不足していることが問題の原因であったということです。他の誰かに役立つ場合に備えて、ここに質問を残しておきます。

いくつかのjUnitソースファイルを生成するrubyスクリプトがあります。

デフォルトのライフサイクルのgenerate-sourcesフェーズで、 exec-maven-pluginを使用してこのrubyスクリプトを呼び出そうとしています。これを実現するためにPOMに追加したものは次のとおりです。

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
            <execution>
                <phase>generate-sources</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <executable>ruby</executable>
            <workingDirectory>supporting_files/ruby</workingDirectory>
            <arguments>
                <argument>CreateUnitTests.rb</argument>
            </arguments>
        </configuration>
    </plugin>          

これは、netbeans(clean install)で「メインプロジェクトのクリーンアップとビルド」を実行しているときに機能しているようですが、プロジェクトを実行すると(process-classes org.codehaus.mojo:exec-maven-plugin:1.1.1:execプロパティを使用して:)

exec.classpathScope=runtime
exec.args=-enableassertions -classpath %classpath org.example.MyProject.App
exec.executable=java

(POMで指示したように)exec.executableとして使用しようとするためruby、実行は失敗します。

では、 ( jUnitテストを実行する前に実行するために)一時的に使用するにはどうすればよいですか?それ以外の場合は使用しますか?rubyruby supporting_files/ruby/CreateUnitTests.rbjava generate-test-sourcesフェーズ中にスクリプトを呼び出す「適切な」方法は何ですか?

編集:問題は、呼び出されている実行可能ファイルを変更するだけではないようです...

私は、rubyインタープリターを呼び出すだけの簡単なJavaプログラムを作成し、コマンドライン引数として受け取ったもの(rubyファイル名)を渡します。

import java.io.IOException;

public class RunRuby {
    public static void main(String args[]) throws IOException {        
        Runtime run = Runtime.getRuntime();
        run.exec("ruby "+args[0]);
    }
}

これにより、POMの実行可能ファイルを変更することを回避できました。

    <plugin>
        <!-- use ruby to generate some jUnit tests -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
            <execution>
                <phase>generate-test-sources</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <executable>java</executable>
            <workingDirectory>supporting_files/ruby</workingDirectory>
            <arguments>
                <argument>RunRuby</argument>                    
                <argument>CreateUnitTests.rb</argument>
            </arguments>
        </configuration>
    </plugin>          

醜い、私は知っています。とにかく、クリーン/ビルドはまだ期待どおりに機能しますが、「実行」はまだ失敗しています!エラーメッセージは次のとおりです。

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.1.1:exec (default-cli) on project MyProject: Result of cmd.exe /X /C "java -enableassertions -classpath C:\Dropbox\dev\java\MyProject\target\classes;C:\Users\username\.m2\repository\LOTS\OF\JARS org.example.MyProject.App" execution is: '-1'. -> [Help 1]

したがって、実行に戻りますjavaが、それでも失敗します。私が気付いている奇妙なことの1つorg.codehaus.mojo:exec-maven-plugin:1.1.1:execは、POMでバージョンを使用するように指示しているにもかかわらず、目標を実行していることです1.2...

4

1 に答える 1

1

の欠如<id>により、カスタマイズされた実行がデフォルトになりました。修正方法は次のとおりです。

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
            <execution>
                <!-- use ruby to generate some jUnit tests during generate-test-sources -->
                <id>generate-test-sources</id>
                <configuration>
                    <executable>ruby</executable>
                    <workingDirectory>supporting_files/ruby</workingDirectory>
                    <arguments>
                        <argument>CreateUnitTests.rb</argument>
                    </arguments>
                </configuration>                    
                <phase>generate-test-sources</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
            </execution>
        </executions>
    </plugin>          
于 2011-08-12T15:22:10.700 に答える