Maven 2 从战争中排除依赖关系

Maven 2 从战争中排除依赖关系,maven-2,Maven 2,如何从war中排除依赖项,但在测试或开发之前使用它在依赖项标记中有一个指定作用域的选项。您可以将范围指定为test,它不会包含在war中,但只用于测试。您可以使用提供的标记来完成 <dependency> <groupId>org.livetribe</groupId> <artifactId>livetribe-jsr223</artifactId> <version>

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

在依赖项标记中有一个指定作用域的选项。您可以将范围指定为test,它不会包含在war中,但只用于测试。

您可以使用
提供的
标记来完成

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

活部落
livetribe-jsr223
2.0.6
假如

正如其他人所建议的那样,scope=provided或scope=test才是正确的选择

  • 提供的
    意味着库将出现在目标系统中,不需要部署。(或者在某些情况下,如log4j,不能部署,否则将导致类加载器问题)
  • test
    表明依赖关系仅用于测试代码(因此在目标系统上不需要或不提供)
  • 以下是相关文件:

    请注意:不同的用例是在不同的服务器上使用不同的数据库。您可以使用配置文件部署正确的驱动程序:

    <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>
    
    
    测试服务器
    ... (数据库驱动程序a)
    生产服务器
    ... (数据库驱动程序b)
    地方发展
    真的
    ... (数据库驱动程序c)
    
    这样,如果只调用
    mvn install
    ,将部署驱动程序c,而
    mvn install-Ptestserver
    mvn install-Pproductionserver
    将分别包括驱动程序a或b