2
我想了解maven構建生命週期,當它是關於測試: 假設我有一個在src/main文件夾中的類和src/test中的另一個類的項目。當我運行mvn install時,它會被編譯,然後測試,然後打包並安裝。什麼樣的生命週期點在測試時被忽略?
直到現在我還以爲maven不會在快照中打包測試,因爲這不是「生產」代碼。這是真的? 在這種情況下,什麼時候maven忽略測試文件?
我想了解maven構建生命週期,當它是關於測試: 假設我有一個在src/main文件夾中的類和src/test中的另一個類的項目。當我運行mvn install時,它會被編譯,然後測試,然後打包並安裝。什麼樣的生命週期點在測試時被忽略?
直到現在我還以爲maven不會在快照中打包測試,因爲這不是「生產」代碼。這是真的? 在這種情況下,什麼時候maven忽略測試文件?
你說的關於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
目標一起打包到另一個附加的工件中。
是的,的確如此。它不包裝測試,除非你使用一些插件來做到這一點。在這裏閱讀:[構建生命週期介紹](https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html) –
簡單回答你的問題是是的。測試不是生產,因此將它們打包到jar文件中是沒有意義的......只有生產代碼打包成jar文件.. – khmarbaise