2016-02-06 20 views
2

我想了解maven構建生命週期,當它是關於測試: 假設我有一個在src/main文件夾中的類和src/test中的另一個類的項目。當我運行mvn install時,它會被編譯,然後測試,然後打包並安裝。什麼樣的生命週期點在測試時被忽略?

直到現在我還以爲maven不會在快照中打包測試,因爲這不是「生產」代碼。這是真的? 在這種情況下,什麼時候maven忽略測試文件?

+0

是的,的確如此。它不包裝測試,除非你使用一些插件來做到這一點。在這裏閱讀:[構建生命週期介紹](https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html) –

+0

簡單回答你的問題是是的。測試不是生產,因此將它們打包到jar文件中是沒有意義的......只有生產代碼打包成jar文件.. – khmarbaise

回答

2

你說的關於Maven lifecycle是真的。 「主」階段包括:

  • compile:在這個階段,maven-compiler-plugin:compile目標是運行的編譯項目的主代碼。
  • test-compile:在這個階段,運行maven-compiler-plugin:testCompile目標,編譯項目的測試代碼。
  • test:在這個階段,運行maven-surefire-plugin:test目標並執行所有單元測試。
  • package:在此階段,maven-jar-plugin:jar目標運行並創建當前項目的JAR。默認情況下,此JAR將包含target/classes下的所有類,其中包含所有主類,但不包含位於target/test-classes內的測試類。你可以說Maven忽略了測試類就是在這一步。
  • install:在這個階段,maven-install-plugin:install會將主要工件和每個附加工件安裝到本地存儲庫中。

更準確地說,並不是Maven忽略測試類,而是默認情況下,打包過程只考慮主類。但是您可以將其配置爲將測試類與maven-jar-plugin:test-jar目標一起打包到另一個附加的工件中。

相關問題