从战争中排除依赖

时间:2010-08-20 06:08:03

标签: maven-2

如何从战争中排除依赖,但在测试或开发之前使用它

3 个答案:

答案 0 :(得分:4)

正如其他人所说,范围=提供或范围=测试是要走的路。

  1. <scope>provided</scope>表示该库将存在于目标系统中,不需要部署。 (或者在某些情况下,例如不能部署log4j,否则将导致类加载器问题)
  2. <scope>test</scope>表明只有测试代码需要依赖(因此不需要或在目标系统上提供)
  3. 以下是相关文件:

    Introduction to the Dependency Mechanism

    在相关说明中:不同的用例是您在不同服务器上使用不同数据库的情况。您可以使用配置文件来部署正确的驱动程序:

    <profiles>
        <profile>
            <id>testserver</id>
            <dependencies>
                <dependency>
                ... (database driver a)
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>productionserver</id>
            <dependencies>
                <dependency>
                ... (database driver b)
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>localdevelopment</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <dependencies>
                <dependency>
                ... (database driver c)
                </dependency>
            </dependencies>
        </profile>
    </profiles>
    

    这样,如果您只是致电mvn install,则会部署驱动程序c,而mvn install -Ptestservermvn install -Pproductionserver将分别包含驱动程序a或b。

答案 1 :(得分:1)

可以在依赖项标记中指定范围。您可以将范围指定为测试,它不会包含在您的战争中,但仅用于测试。

答案 2 :(得分:1)

您使用<scope>provided</scope>代码执行此操作。

    <dependency>
        <groupId>org.livetribe</groupId>
        <artifactId>livetribe-jsr223</artifactId>
        <version>2.0.6</version>
        <scope>provided</scope>
    </dependency>