代码之家  ›  专栏  ›  技术社区  ›  Einar

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

  •  2
  • Einar  · 技术社区  · 16 年前

    我有一个用于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驱动程序。

    更新: 我无法对mygroup.myartifact的POM进行更改,因为这是许多其他项目所依赖的,并且此排除要求对于我的项目是唯一的。

    更新2: 看来我对这个问题的措辞做得不好。Lars下面的解决方案对于一个排除是完美的(如示例所示),但是在我的真实场景中,我有多个排除,并且为每个排除添加额外的依赖项似乎很难闻。似乎可行的解决方案是将所示依赖项的范围设置为 编写 测验 . 既然拉尔斯两人都正确地回答了我措辞拙劣的问题,并引导我走向了实际解决方案,我将把他的回答标记为答案。

    1 回复  |  直到 15 年前
        1
  •  7
  •   Lars Westergren    16 年前

    在依赖项中使用“scope”标记。

    <scope>test</scope>
    

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

    第二次编辑:好的,如果您不控制您想要包含的POM,请像您已经做的那样进行排除,然后添加jdbc作为一个新的依赖项,scope=test。