3
我不確定這是否支持Maven或不。我感謝任何幫助,我可以得到。孩子poms可以繼承父pom中定義的依賴排除嗎?
我有一個父pom,它定義了一個依賴項和一個排除項。我不能改變父POM:
<dependency>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>1.0</version>
<exclusions>
<!-- this exclusion needs to be inherited by all children -->
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</exclusion>
</exclusions>
</dependency>
然後在子POM,我需要從父是相同的依賴排除不同依賴。像這樣
<dependency>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>1.0</version>
<exclusions>
<!-- this exclusion is just for the child -->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
但如果我這樣做,孩子就會有SLF4J罐子排除(正確的),但它不會有彈簧雲配置服務器罐子排除在外,除非如果我重申父排除在該依賴關係的子代聲明中。
我意識到我可以複製它,但這很混亂,我意識到將孩子的排斥推到父母身上很容易,但是我會強制排除所有其他孩子。
我想要的是Maven合併依賴排除信息,當相同的依賴關係在父和子中被不同地聲明時。
這可能嗎?
這可以通過在父使用dependencyManagement被正確處理,但你說你不能改變父。 ..在你的情況下,你必須重複排除....此外,原來的項目在使用slf4j而不是僅使用slf4j-api時會出錯,並讓用戶決定應該使用什麼實際實現... – khmarbaise
這可能工作。我說我不能改變它,但是我真的不能將log4j2強加給父母。我可能會改變父母,使其不那麼幹擾。我會試一試。 –
你能否澄清它將如何與dependencyManagement協同工作?你是說我會把排除在dependencyManagement部分內,並且會傳播下去嗎? –