我有一个用于 Web 服务的 Maven POM 文件。对于其中一个依赖项,我必须为 jar 文件指定几个排除项,这些 jar 文件已经保存在 Web 应用程序服务器的更高级别(所有 Web 应用程序都可以访问,而不仅仅是这个特定的)。这种排除的一个示例是包含我的 JDBC 驱动程序的 JAR。
示例(带有虚构细节):
<dependency>
<groupId>mygroup</groupId>
<artifactId>myartifact</artifactId>
<version>1.0.0</version>
<exclusions>
<!--The jdbc driver causes hot-deployment issues-->
<exclusion>
<groupId>db.drivers</groupId>
<artifactId>jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
我遇到的问题是我的测试需要 JDBC 驱动程序。我的测试目前失败,因为它们无法加载 JDBC 驱动程序。
如何配置 POM,以便我的测试可以访问排除的部分,但不包含在我的 WAR 文件中?
更新:我无法对 mygroup.myartifact 的 POM 进行更改,因为它被许多其他项目所依赖,并且此排除要求对于我的项目来说是独一无二的。
更新 2:看来我在这个问题的措辞上做得很差。Lars 下面的解决方案非常适合一个排除项(如示例所示),但是在我的实际场景中,我有多个排除项,并且为每个排除项添加额外的依赖项似乎很臭。似乎可行的解决方案是将显示的依赖项的范围设置为编译,然后创建第二个依赖项,该依赖项是相同的工件(mygroup.myartifact),没有排除项,范围设置为test。由于 Lars 既正确回答了我措辞不佳的问题,也将我引向了实际解决方案的方向,因此我将他的回复标记为答案。