亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

排除單個依賴項的所有傳遞依賴項

排除單個依賴項的所有傳遞依賴項

烙印99 2019-09-19 15:31:45
在Maven2中,為了排除單個傳遞依賴,我必須做這樣的事情:<dependency>  <groupId>sample.group</groupId>  <artifactId>sample-artifactB</artifactId>  <version>1</version>   <exclusions>     <exclusion>       <groupId>sample.group</groupId>       <artifactId>sample-artifactAB</artifactId>     </exclusion>   </exclusions></dependency>這種方法的問題在于我必須為每個由此貢獻的傳遞依賴項執行此操作sample-artifactB。有沒有辦法使用某種通配符一次排除所有傳遞依賴,而不是一個一個?
查看完整描述

3 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

對于maven2,沒有辦法做你所描述的。對于maven 3,有。如果您使用的是maven 3

對于maven 2,我建議為具有<exclusions>的依賴項創建自己的自定義pom。對于需要使用該依賴項的項目,請將依賴項設置為自定義pom而不是典型工件。雖然這不一定允許您使用單個<exclusion>排除所有傳遞依賴項,但它確實允許您只需編寫一次依賴項,并且所有項目都不需要維護不必要的長排除列表。


查看完整回答
反對 回復 2019-09-19
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

對我有用的東西(可能是Maven的新功能)僅僅是在排除元素中做通配符。


我有一個多模塊項目,其中包含一個“app”模塊,該模塊在兩個WAR打包的模塊中引用。其中一個WAR打包的模塊實際上只需要域類(我還沒有將它們從app模塊中分離出來)。我發現這個工作:


<dependency>

    <groupId>${project.groupId}</groupId>

    <artifactId>app</artifactId>

    <version>${project.version}</version>

    <exclusions>

        <exclusion>

            <groupId>*</groupId>

            <artifactId>*</artifactId>

        </exclusion>

    </exclusions>

</dependency>

groupId和artifactId上的通配符排除了通常使用此依賴關系傳播到模塊的所有依賴項。


查看完整回答
反對 回復 2019-09-19
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

我覺得有用的一件事:


如果將依賴項與依賴項放在項目的父POM的dependencyManagement部分中,或者在可導入的依賴項管理POM中,那么您不需要重復排除(或版本)。


例如,如果您的父POM具有:


<dependencyManagement>

    <dependencies>

    ...         

        <dependency>

            <groupId>commons-fileupload</groupId>

            <artifactId>commons-fileupload</artifactId>

            <version>1.2.1</version>

            <exclusions>

                <exclusion>

                    <groupId>junit</groupId>

                    <artifactId>junit</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

     ....

  </dependencies>

</dependencyManagement>

然后,項目中的模塊可以簡單地將依賴關系聲明為:


        <dependency>

            <groupId>commons-fileupload</groupId>

            <artifactId>commons-fileupload</artifactId>

        </dependency>

父POM中將指定版本和排除項。我幾乎在所有項目中使用這種技術,它消除了大量的重復。


查看完整回答
反對 回復 2019-09-19
  • 3 回答
  • 0 關注
  • 933 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號