2011-05-03 152 views
4

我的一個項目需要爲生成的JAR文件設置相當複雜的設置,因此我想在package階段之後運行測試以確保JAR包含它應該包含的內容。包裝後運行測試

我該如何做到這一點與Maven 2?

+0

也許這是值得看看的[Maven的故障安全插件](http://maven.apache.org/plugins/maven-failsafe-plugin/) - 不幸的是我從來沒有用它自己並能沒有提供更多的信息。 – FrVaBe 2011-05-03 07:47:59

回答

3

將您的項目轉換爲multi-module build。在第一個模塊中,構建您的原始項目。在第二個模塊中,向第一個模塊添加一個依賴項。

這會將第一個JAR添加到類路徑中。


更新由OP:這工作,但我不得不把它添加到我的POM:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>${version.maven-surefire-plugin}</version> 
      <configuration> 
       <useSystemClassLoader>false</useSystemClassLoader> 
      </configuration> 
     </plugin> 

的重要組成部分,是<useSystemClassLoader>false</useSystemClassLoader>。如果沒有這個,我的類路徑只包含幾個VM JAR以及surefire引導程序JAR(其中包含MANIFEST.MF中的測試類路徑)。我不知道爲什麼這個測試類路徑不能從它加載的類中看到。

+0

測試工藝?你的意思是另一個模塊? – 2011-05-03 07:32:16

+0

是的。一個額外的人工製品將要求您最近從存儲庫中構建您的lib並對其進行檢查。 – martin 2011-05-03 13:27:16

5

您可以使用surefire插件。你需要做的是將一個階段與一個執行相關聯(見下文)。你需要在軟件包階段之後將階段改爲任何你想要的。

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <skip>true</skip> 
      </configuration> 
      <executions> 
       <execution> 
        <id>unittests</id> 
        <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <skip>false</skip> 
         <includes> 
          <include>**/**/**/*Test.java</include> 
         </includes> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

你確定打包的jar文件將在測試類路徑中而不是在編譯類中嗎? – FrVaBe 2011-05-03 09:03:45

+1

@K。 Clazen:是的,會的。用'-X'參數運行maven來檢查類路徑。 – 2011-05-03 09:41:35

+0

@Robert Munteanu在構建jar之後:c:\ me \ workspaces \ default \ do-nothing-project-target \ do-nothing-project-0.0.1-SNAPSHOT.jar'我得到了'[DEBUG] Test Classpath: [調試] c:\ me \ workspaces \ default \ do-nothing-project \ target \ test-classes [DEBUG] C:\ me \ workspaces \ default \ do-nothing-project \ target \ classes [DEBUG] C :\ Users \ me \ .m2 \ repository \ junit \ junit \ 4.8.2 \ junit-4.8.2.jar' - 看起來像編譯的類在類路徑而不是jar。 – FrVaBe 2011-05-03 10:19:19