gpt4 book ai didi

java - War 文件的 Maven 依赖排除,但包含测试

转载 作者:行者123 更新时间:2023-12-03 21:57:12 26 4
gpt4 key购买 nike

我有一个 Web 服务的 Maven POM 文件。对于其中一个依赖项,我必须为已经保存在更高级别的 web 应用程序服务器中的 jar 文件指定几个排除项(所有 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 下面的解决方案非常适合一个排除(如示例所示),但在我的真实场景中,我有多个排除,并且为每个添加额外的依赖项似乎很臭。似乎有效的解决方案是将显示的依赖项的范围设置为 compile,然后创建第二个依赖项相同的工件 (mygroup.myartifact),没有排除项并将范围设置为 test 。由于 Lars 都正确地回答了我措辞不佳的问题,并引导我找到了实际的解决方案,因此我将他的回复标记为答案。

最佳答案

在你的依赖中使用“scope”标签。

<scope>test</scope>

http://maven.apache.org/pom.html#Dependencies

编辑:如果我正确理解您的配置,您需要添加的 scope=test 应该添加到 mygroup.myartifact POM 中。这样您就可以使用包含的 jdbc jar 测试该工件,但总是在其他 POMS 想要包含 mygroup.myartifact 时,它们不会将 jdbc 作为传递依赖项包含在内。

第二次编辑:好的,如果您不控制要包含的 POM - 像您已经完成的那样进行排除,然后将 jdbc 添加为新的依赖项,使用 scope=test。

关于java - War 文件的 Maven 依赖排除,但包含测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/132597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com