簡體   English   中英

使用Maven-surefire-plugin的Maven插件管理的怪異行為

[英]Weird behavior with Maven plugin management with maven-surefire-plugin

我有一個父母pom定義

<pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19.1</version>
                    <configuration>
                        <parallel>classesAndMethods</parallel>
                        <threadCount>4</threadCount>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

我有一個子項目,該子項目從pom繼承,但未在其插件部分中聲明該插件。 我仍然可以在執行Maven測試目標時看到該插件生效。

這是正常現象,因為默認情況下, maven-surefire-plugin作為內置生命周期綁定的一部分綁定到test階段。 無需在子項目中聲明它。

換句話說,該插件對於子項目是隱式可用的,因為它將自身綁定到test階段。 默認情況下, maven-scm-plugin (在另一個問題中鏈接)沒有綁定到任何階段,因此您必須在子級中聲明它才能從父級繼承配置。 但是由於maven-surefire-plugin默認綁定到測試階段,因此您不需要在子級中聲明它。 嘗試在子模塊中運行mvn help:effective-pom ,以查看有效的POM ,其中顯示了Maven實際使用的最終POM。 檢查http://maven.apache.org/ref/3.3.9/maven-core/default-bindings.html以查看默認插件綁定。

如果要跳過該插件,只需執行mvn install或傳遞-DskipTests=true 如果仍然需要運行mvn test來在其他項目中運行測試,則可以跳過子模塊的POM中的測試(盡管完全不建議這樣做):

<plugins>
     <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
              <skipTests>true</skipTests>
         </configuration>
     </plugin>
</plugins>

在父項目中定義maven-surefire插件時,請參閱: http : //maven.apache.org/surefire/maven-surefire-plugin/usage.html

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

添加配置節將使其隱式在每個子項目中執行。

在子項目中,配置看起來像

 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
      <parallel>classesAndMethods</parallel>
      <threadCount>4</threadCount>
  </configuration>
</plugin>

即使子項目中的配置非常冗長,也可以確保在所有子模塊中顯式添加依賴項和相同版本的插件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM