不同构建配置文件的不同依赖关系

izb*_*izb 105 java dependencies build-process maven-2

是否可以在maven pom.xml文件中为不同的配置文件使用不同的依赖项集?

例如

mvn -P debug
mvn -P release
Run Code Online (Sandbox Code Playgroud)

我想在一个配置文件中选择一个不同的依赖jar文件,该配置文件具有相同的类名和相同接口的不同实现.

Ale*_*rov 164

引用Maven文档:

概要文件元素包含可选的激活(概要文件触发器)以及在激活该概要文件后对POM进行的一组更改.例如,为测试环境构建的项目可能指向与最终部署不同的数据库.或者可以基于所使用的JDK版本从不同的存储库中提取依赖性.

(重点是我的)

只需将release配置文件的依赖项放在配置文件声明本身中,并执行相同的操作debug.

<profiles>
    <profile>
        <id>debug</id>
        …
        <dependencies>
            <dependency>…</dependency>
        </dependencies>
        …
    </profile>
    <profile>
        <id>release</id>
        …
        <dependencies>
            <dependency>…</dependency>
        </dependencies>
        …
    </profile>
</profiles>

  • 您可以在依赖关系层次结构中将特定于发布的依赖关系的范围设置为“提供”,并在发布配置文件部分将范围重置为“编译”。这样,该依赖关系可用于编译,但在最终的“调试”配置文件战争中不可用。 (4认同)
  • 此方法将导致在编辑模式下无法解析代码。如果调试是活动的,则将缺少发行版的依赖项jar,并且代码将是错误的。怎么解决呢? (2认同)

小智 6

您的groupId,artifactId应该在您的配置文件中标记为属性,并且您可以将依赖项移至通用部分。

  • 仅当您有1个依赖项时才是这种情况。如果调试和发布之间的依赖关系数量不同,则仅令牌化将不起作用。为此,我建议不要在概要文件部分中标记化并明确定义dep。 (2认同)