2012-03-03 24 views
0

我不知道這是個問題還是建議。但我會問這是一個問題,因爲我可能會犯錯。Maven:跳過測試但仍然無法啓動

我的問題是,我想跳過Maven構建測試,在Eclipse插件運行Maven,當我檢查了跳過測試選項配置。它仍然無法通過測試surefire插件,因爲它無法下載2.4.3版本(即使我之前的maven項目使用了2.7.2,並且它已經存在於我的回購中)所以我嘗試了跳過測試,但它仍然失敗。

我配置我的POM使用的萬無一失的2.7.3插件,我已經有了,它只是上前說跳過的測試。現在,我的困惑是,當它已經要跳過測試部分時,爲什麼還要進入下載並確認插件是否存在。只是跳過它,我說..

很好,就是行家的正常行爲,當你跳過一些插件還是下載,如果你要使用它。或者是我錯誤地做了下載。

可能是因爲有些新東西叫做「Effective POM」,它包含了插件管理區域中的surefire插件2.4.2的列表,當我使用m2eclipse在eclipse中導入我的maven項目時,我無法編輯Effective POM。在製作Maven項目時,我之前沒有在NetBeans中看到過這個。

爲了工作,我加入我的建造輪廓不必要的保命插件條目,並跳過了測試,有作爲,並補充說我在回購就已經版本。我只是這樣做的,以便我的項目也可以在eclipse下構建。其他明智的我的項目在NetBeans和簡單的命令行中工作沒有任何問題。

有什麼意見!!

我想maven應該能夠先看到SKIP部分,然後進入插件的使用。

賽義德..

+0

你能後你得到了錯誤的信息?而pom(節選)會有所幫助。 – khmarbaise 2012-03-03 16:47:42

+0

該錯誤只是說它不能下載surefire插件2.4.3並要求我手動下載並手動添加它。所以我使用了2.7.2(對不起,它不是2.7.3)。現在它的工作就像我在POM中添加它一樣。 eclipse插件在Pom.xml中有一個新的部分叫做Effective POM,它在其插件管理部分有這個2.4.3插件版本。我通過在我的實際POM中添加2.7.2來駕駛它。 (有效POM是一個不可編輯的POM我認爲日食實際上礦採用沿) – sarmahdi 2012-03-04 06:56:54

+0

有效POM是行家與您的項目目前POM混合的超級POM。爲了更加準確,你的pom繼承了超級pom中的東西。您可以輸出這個命令行以及通過MVN幫助:有效-POM ... – khmarbaise 2012-03-04 11:21:05

回答

0

根據你所提到的,你不明白使用的插件和配置插件之間的差異。在這種情況下,您正在使用該插件(它位於您的構建區域中,或者您已經通過超級Pom計算出)。此外,儘管maven-surefire-plugin in version 2.7.3不存在,但您仍試圖跳過測試。

配置參數跳過不會執行測試,也不會編譯它們。如果你不想在有限的時間內忽略這些測試,你可以使用「skipTest」參數,與跳過相反將繼續編譯測試。

我會建議使用你的項目pluginManagement部分或你的父POM定義Maven的萬無一失,插件(在此期間存在於2.12版本)的版本...

下面的代碼片段將pluginManagement部分添加到一個可以控制maven-surefire插件版本將被使用的pom中。

<build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.11</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
    .. 
    </build> 

你插入之後到項目的pom輸出作用POM應該給你的版本...否則,你可能需要先更新項目配置。

+0

我從行家建設2.7.2並自行下載自己的回購協議。看着你的鏈接evev 2.7.2是一箇舊版本。當我將該項目添加到eclipse中並使用maven插件進行eclipse時,它創建了一個有效的POM,用於列出該插件的OLDer版本。我想這是很難連接到Eclipse插件來配置使用2.4.3。我看到有效POM中的很多插件實際上都很舊。我無法控制有效的POM,所以我不能在那裏改變任何東西。 – sarmahdi 2012-03-04 07:00:42

+0

Eclipse插件無關這個問題,因爲它是基於Maven中(超級POM;如前所述)。 – khmarbaise 2012-03-04 11:22:00

0

編譯和運行測試是maven的默認lifecycle的一部分。由於maven使用surefire進行運行測試,因此需要下載surefire。skipTests不是maven配置,而是一個可靠的插件配置。該插件確定maven需要skip tests

至於2.4.3的surefire插件,它是valid version,但會與2.0.6版本的maven一起使用。最有可能你使用的是較新的行家,但是,由於某種原因,有您的系統上了年紀的行家版super pom

0

skipTest沒有告訴Maven來跳過測試生命週期,它告訴萬無一失插件不運行它們。插件仍然是生命週期的一部分(當它被調用時,它什麼也不做)。因此你的錯誤。

如果你不想要一切,你需要定義你自己的包裝(因爲surefire是標準jar包裝生命週期的一部分) - 這比僅選擇適用於surefire的版本更重要你(在你的部分添加一個右邊的部分)。

相關問題