5

Jenkinsボックスで、Mavenで構築されたjUnit4テストを実行しています。私の目標は、テストを実行する前にテスト データベースを復元することです。

exec-maven-plugin が適しているようですが、実行できません。ポインタはありますか?例はたくさんありますが、mojo サイトのドキュメントはかなり薄いものです。

現在実行する必要があるクラスは次の場所にあります。

MyProject.src.test.java._tools.BuildTestEnvironment.java

私の pom.xml には以下が含まれます:

<pluginManagement>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>            
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.3</version>
            <executions>
                <execution>
                    <id>build-test-environment</id>
                    <phase>generate-test-resources</phase>            
                    <goals>
                        <goal>java</goal>            
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>src.test.java._tools.BuildTestEnvironment</mainClass>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

これを Jenkins で実行しても、実際には何も起こりません。ローカルで実行すると、

成功せずに試したこと:

  1. Jenkins でビルドを実行します。実際には何も起こりません。プロジェクトがビルドされ、テストの実行が開始されますが、クラスが実行されません。

  2. ビルドをローカルで実行します。Jenkins と同じ結果になります。そこに驚きはありません。

  3. generate-test-resources をローカルで実行します: ClassNotFoundException。すなわち:

    mvn exec:java 生成テスト リソース
    java.lang.ClassNotFoundException: src.test.java._tools.BuildTestEnvironment

  4. クラスを jar にコンパイルし、それを pom に追加します。

アップデート:

@ppuskar のコメントを読んだ後、buildxxx クラスを少し動かしてみました。src.main.java._tools.BuildTestEnvironment に移動した後も、同様のメッセージが表示されます。これが役立つ場合に備えて、私のビルドログは次のとおりです。

[デバッグ] 呼び出し: test.java._tools.BuildTestEnvironment.main()
[デバッグ] プラグインの依存関係は除外されます。
[デバッグ] プロジェクトの依存関係が含まれます。
[デバッグ] 収集されたプロジェクト アーティファクト [joda-time:joda-time:jar:2.3:compile、net.sf.jt400:jt400:jar:6.7:compile、junit:junit:jar:4.11:compile、org.hamcrest:hamcrest -core:jar:1.3:compile, com.fasterxml.jackson.core:jackson-core:jar:2.3.0:compile, com.fasterxml.jackson.core:jackson-databind:jar:2.3.0:compile, com .fasterxml.jackson.core:jackson-annotations:jar:2.3.0:コンパイル、org.hamcrest:hamcrest-all:jar:1.3:コンパイル、org.apache.logging.log4j:log4j-api:jar:2.0-rc1 :compile, org.apache.logging.log4j:log4j-core:jar:2.0-rc1:compile]
[DEBUG] 収集したプロジェクトのクラスパス [C:\workspace\VSP_UnitTest\target\classes]
[DEBUG] クラスパスへの追加: file:/C:/workspace/VSP_UnitTest/target/classes/
[DEBUG] プロジェクト依存アーティファクトの追加: joda-time をクラスパスに
[DEBUG] プロジェクト依存アーティファクトの追加: jt400 をクラスパスに
[DEBUG] プロジェクトの追加依存性アーティファクト: junit をクラスパスに
追加 [DEBUG] プロジェクト依存性アーティファクトを追加: hamcrest-core をクラスパスに
[DEBUG] プロジェクト依存性アーティファクトを追加: jackson-core をクラスパスに
[DEBUG] プロジェクト依存性アーティファクトを追加: jackson-databind をクラスパスに
[DEBUG] プロジェクトを追加依存性アーティファクト: jackson-annotations をクラスパスに
追加 [DEBUG] プロジェクト依存性アーティファクトを追加: hamcrest-all をクラスパスに
[DEBUG] プロジェクト依存性アーティファクトを追加: log4j-api をクラスパスに
[DEBUG] プロジェクト依存アーティファクトの追加: log4j-core をクラスパスに
[DEBUG] スレッドに参加 Thread[test.java._tools.BuildTestEnvironment.main(),5,test.java._tools.BuildTestEnvironment]
[警告] java.lang. ClassNotFoundException: test.java._tools.BuildTestEnvironment
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged( Native Method)
で java.net.URLClassLoader.findClass(URLClassLoader.java:354)
で java.lang.ClassLoader.loadClass(ClassLoader.java:424)
で java.lang.ClassLoader.loadClass(ClassLoader.java:357)
で.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:281)
java.lang.Thread.run(Thread.java:724) で
[情報] -------------------------------- ----------------------------------------
[情報] ビルドの失敗
[情報] -- -------------------------------------------------- --------------------
[情報] 合計時間: 2.602 秒
[情報] 終了時刻: 2014-05-15T14:38:50-05:00
[情報]最終記憶: 12M/152M
[情報] ----------------------------------------- -------------------------------

4

3 に答える 3

4

BuildTestEnvironment.javaからsrc.test.java._toolsに移動してみsrc.main.java._tools てください。つまり、クラスは src.main.java._tools.BuildTestEnvironment

あなたが提供したシナリオを実行してみました。あなたが言ったように失敗しましたが、Javaファイルをテストからメインに移動しました.... RAN :)

乾杯 :)

于 2014-05-14T17:10:22.980 に答える