आश्रितों से कलाकृतियों को एक <exclusions>
अंदर एक तत्व घोषित करके बाहर रखा जा सकता है, <dependency>
लेकिन इस मामले में मूल परियोजना से विरासत में मिली एक कलाकृति को बाहर करने की आवश्यकता होती है। चर्चा के तहत पोम का एक अंश इस प्रकार है:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>jruby</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<artifactId>base</artifactId>
<groupId>es.uniovi.innova</groupId>
<version>1.0.0</version>
</parent>
<dependencies>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>ALL-DEPS</artifactId>
<version>1.0</version>
<scope>provided</scope>
<type>pom</type>
</dependency>
</dependencies>
</project>
base
कलाकृति, निर्भर करता है javax.mail:mail-1.4.jar
, और ALL-DEPS
उसी पुस्तकालय के एक और संस्करण पर निर्भर करता है। तथ्य के कारण है कि mail.jar
से ALL-DEPS
निष्पादन पर्यावरण पर मौजूद हैं, हालांकि निर्यात नहीं किया, के साथ टकराता है mail.jar
कि माता-पिता, जो के रूप दायरे वाला पर मौजूद है compile
।
एक समाधान मूल POM से mail.jar से छुटकारा पाने के लिए हो सकता है, लेकिन अधिकांश परियोजनाएं जो आधार का उत्तराधिकार प्राप्त करती हैं, उन्हें इसकी आवश्यकता होती है (जैसा कि log4j के लिए एक ट्रान्सटेसिव निर्भरता है)। तो मैं क्या करना चाहते हैं बस करने के लिए है माता-पिता के पुस्तकालय को बाल परियोजना से बाहर , क्योंकि यह base
एक आश्रित होने पर किया जा सकता है और माता-पिता के लिए नहीं:
...
<dependency>
<artifactId>base</artifactId>
<groupId>es.uniovi.innova</groupId>
<version>1.0.0</version>
<type>pom<type>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
</exclusions>
</dependency>
...