[英]Maven run class before test phase: exec-maven-plugin exec:java not executing class
我在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運行,沒有任何事情發生。 如果我在本地運行它,我會
我嘗試過的事情沒有成功:
在Jenkins中運行構建:沒有任何事情發生。 該項目構建並開始運行測試,但我的課程沒有運行。
在本地運行構建:與Jenkins中的結果相同。 這並不奇怪。
在本地運行generate-test-resources:ClassNotFoundException。 即:
mvn exec:java generate-test-resources
java.lang.ClassNotFoundException:src.test.java._tools.BuildTestEnvironment
將類編譯成jar,然后將其添加到我的pom中。
更新:
在閱讀@ ppuskar的評論之后,我嘗試了一下我的buildxxx類。 將它移動到src.main.java._tools.BuildTestEnvironment后,我仍然收到類似的消息。 這是我的構建日志,如果有幫助:
[DEBUG]調用:test.java._tools.BuildTestEnvironment.main()
[DEBUG]將排除插件依賴項。
[DEBUG]將包括項目依賴項。
[DEBUG]收集的項目工件[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:compile,org.hamcrest:hamcrest-all:jar:1.3:compile,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]添加到classpath:file:/ C:/ workspace / VSP_UnitTest / target / classes /
[DEBUG]添加項目依賴項工件:joda-time到classpath
[DEBUG]添加項目依賴項工件:jt400到classpath
[DEBUG]添加項目依賴項工件:junit到classpath
[DEBUG]添加項目依賴項工件:hamcrest-core到classpath
[DEBUG]添加項目依賴項工件:jackson-core到classpath
[DEBUG]添加項目依賴項工件:jackson-databind到classpath
[DEBUG]添加項目依賴項工件:jackson-annotations到classpath
[DEBUG]添加項目依賴項工件:hamcrest-all到classpath
[DEBUG]添加項目依賴項工件:log4j-api到classpath
[DEBUG]添加項目依賴項工件:log4j-core到classpath
[DEBUG]加入線程Thread [test.java._tools.BuildTestEnvironment.main(),5,test.java._tools.BuildTestEnvironment]
[警告] java.lang.ClassNotFoundException:test.java._tools.BuildTestEnvironment
在java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)
在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
在java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
在org.codehaus.mojo.exec.ExecJavaMojo $ 1.run(ExecJavaMojo.java:281)
在java.lang.Thread.run(Thread.java:724)
[INFO] ----------------------------------------------- -------------------------
[INFO]建立失敗
[INFO] ----------------------------------------------- -------------------------
[INFO]總時間:2.602秒
[INFO]完成時間:2014-05-15T14:38:50-05:00
[INFO]最終記憶:12M / 152M
[INFO] ----------------------------------------------- -------------------------
我想留下這個評論來解決Rebzie的評論,但我沒有聲譽。
但是,您在主配置中有測試配置
Exec Maven插件支持更改類路徑范圍,以便您可以使用測試范圍的資源,而無需將它們移出測試包,如下所示:
<configuration>
<mainClass>src.test.java._tools.BuildTestEnvironment</mainClass>
<classpathScope>test</classpathScope>
</configuration>
這提供了一個干凈的解決方案,您的測試設置代碼將保留在測試資源中。
嘗試將BuildTestEnvironment.java
從src.test.java._tools
移動到src.main.java._tools
即您的類將是src.main.java._tools.BuildTestEnvironment
我試着運行你提供的場景。 它像你說的那樣失敗,但是我將java文件從測試中移動到main ....它RAN :)
CHEERS :)
我正在嘗試一些非常相似的東西,如果有人偶然發現,我只是把我的發現留在這里。 我打算在測試中創建一個類來創建一些測試資源,然后運行實際的測試。
核心問題是maven階段test-compile
在 generate-test-resources
之后運行。 測試分支中的代碼在執行時尚未編譯,因此exec-plugin沒有找到編譯的類。
我的臨時解決方案是將exec-plugin附加到階段process-test-classes
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.