Bağımlılıklardan gelen yapılar, bir <exclusions>
öğe içinde bir öğe bildirilerek hariç tutulabilir. <dependency>
Ancak bu durumda, bir üst projeden miras alınan bir yapıyı dışlamak gerekir. Tartışılan POM'dan bir alıntı aşağıdaki gibidir:
<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
yapı aynı kitaplığın başka bir sürümüne bağlıdır javax.mail:mail-1.4.jar
ve ALL-DEPS
bağlıdır. Ticari kullanımda mail.jar
gelen ALL-DEPS
ile çarpışır dışa değil, ancak işletme ortamı biri, mail.jar
şekilde odaklanan ebeveyn bulunduğunucompile
.
Bir çözüm mail.jar dosyasını ana POM'dan çıkarmak olabilir, ancak tabanı devralan projelerin çoğu buna ihtiyaç duyar (log4j için geçici bir bağımlılık olduğu gibi). Bu yüzden yapmak istediğim şey, ebeveynin kütüphanesini alt projeden çıkarmaktır , çünkü bu base
bir bağımlılık olsaydı ve ebeveyn pom değil ise yapılabilirdi :
...
<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>
...