簡體   English   中英

覆蓋 maven 插件中的依賴版本

[英]Overriding dependencies version in maven plugin

我項目的 pom 包含:

    <!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId> 
        <version>2.2</version>
    </plugin>

我使用這個 Maven 插件 ( tomcat7-maven-plugin ) 通過運行來測試我的 war 文件:

mvn tomcat7:run

該插件本身是多模塊項目tomcat-maven-plugin的一個模塊。

tomcat-maven-plugin-2.2.pom(parent/reactor)的部分內容:

<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<packaging>pom</packaging>
<name>Apache Tomcat Maven Plugin</name>
<version>2.2</version>
<properties>
    <tomcat7Version>7.0.47</tomcat7Version>
</properties>

tomcat7-maven-plugin-2.2.pom(模塊)部分內容:

<parent>
    <artifactId>tomcat-maven-plugin</artifactId>
    <groupId>org.apache.tomcat.maven</groupId>
    <version>2.2</version>
</parent>
<artifactId>tomcat7-maven-plugin</artifactId>
<packaging>maven-plugin</packaging>
<name>Apache Tomcat Maven Plugin :: Tomcat 7.x</name>
<dependencies>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>${tomcat7Version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-util</artifactId>
        <version>${tomcat7Version}</version>
    </dependency>
</dependencies>

從這些 poms 可以看出,tomcat7-maven-plugin 模塊包含大量 tomcat 依賴項。 這些依賴項的版本由父級的屬性tomcat7Version集中管理。

在上面的示例中,tomcat-embed-core 和 tomcat-util 依賴項的版本是 7.0.47,如在父級的 pom.xml 中定義的那樣。

我正在尋找一種方法來覆蓋tomcat7Version屬性。
我絕對可以覆蓋我項目的 pom 中的所有 tomcat 依賴項,如下所示:

    <!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId> 
        <version>2.2</version>
        <dependencies>
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-core</artifactId>
                <version>7.0.109</version>
            </dependency>
            <dependency>
                <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-util</artifactId>
                <version>7.0.109</version>
            </dependency>
        </dependencies>
    </plugin>

但這不是解決需求的優雅方式。 目前有 18 個依賴項,通常可以有任意數量的依賴項。 因此覆蓋每個依賴項的版本可能會很混亂。

是否可以從項目的 pom中覆蓋tomcat7Version屬性?
一般的想法是集中覆蓋父級 pom.xml 中定義的參數。

您可以像這樣通過 pluginManagement 定義一個插件:

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>..</groupId>
        <artifactId>..</artifactId>
        <version>..</version>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

暫無
暫無

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

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