我有pom声明的依赖关系A,B和C.是否可以创建一个删除依赖关系的配置文件,这样当我使用该配置文件进行编译时,我最终会得到编译后的依赖关系A和B(没有C) ?
答案 0 :(得分:14)
我不知道在配置文件中排除顶级依赖项的方法(<exlusions>
仅适用于传递依赖项)。但是,您可以在默认配置文件中指定“正常”依赖关系,并在单独的配置文件中指定减少的依赖关系,例如:
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>excludeDependency</id>
<dependencies>
</dependencies>
</profile>
</profiles>
如果在某处使用log4j,使用'excludeDependency'配置文件进行编译将会失败。
您的使用案例不明确。也许其他一些解决方案,例如optional dependencies或provided dependencies也可以满足您的需求。看看这些可能性。
答案 1 :(得分:3)
在Maven中,配置文件是基本配置文件的附加信息,因此我发现这种使用模式有利于排除依赖项:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>Exclude</id>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>test</scope>
</dependency>
</dependencies>
</profile>
</profiles>
然后你&#34;排除&#34;通过将范围更改为测试来实现依赖性。并不适合所有用法,但也可以作为另一种选择。