簡體   English   中英

Maven:刪除單個傳遞依賴項

[英]Maven: remove a single transitive dependency

我的項目包含一個jar文件,因為它被列為傳遞依賴項。

但是,我不僅驗證了我不需要它,但它會導致問題,因為jar文件中的類會影響我在另一個jar文件中需要的類。

如何從傳遞依賴中遺漏一個jar文件?

您可以通過以下方式排除依賴項:

        <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
                <version>2.5.6</version>
                <exclusions>
                        <exclusion>
                                <groupId>commons-logging</groupId>
                                <artifactId>commons-logging</artifactId>
                        </exclusion>
                </exclusions>
        </dependency>

正確的方法是使用排除機制,但是有時您可能更喜歡使用以下hack來避免在許多工件具有您希望忽略的相同傳遞依賴性時添加大量排除。 您可以使用“已提供”范圍定義其他依賴項,而不是指定排除項。 這告訴Maven您將手動處理在運行時提供此工件,因此不會打包它。 例如:

    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>2.5.6</version>
    </dependency>
    <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
    </dependency>

副作用:您必須指定要忽略的工件版本,並在構建時檢索其POM; 常規排除情況並非如此。 如果您在防火牆后運行私有Maven存儲庫,這可能是一個問題。

您可以通過明確排除有問題的工件來完成此操作。 獲取包含問題的依賴關系並將其標記為排除:

來自maven 網站

<dependency>
  <groupId>group-a</groupId>
  <artifactId>artifact-a</artifactId>
  <version>1.0</version>
  <exclusions>
    <exclusion>
      <groupId>group-c</groupId>
      <artifactId>excluded-artifact</artifactId>
    </exclusion>
  </exclusions>
</dependency>

暫無
暫無

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

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