2008-10-03 70 views
86

对于不同配置文件,maven pom.xml文件中是否有不同的依赖关系?maven中不同构建配置文件的不同依赖关系

例如

mvn -P debug 
mvn -P release 

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

+0

这可以用于定位不同的Web服务器。例如,为JavaEE 5服务器构建JavaEE 5服务器时,该服务器提供了不应包含在war文件中的JAXB之类的库,与为JavaEE 1.4服务器构建应该包含JAXB JAR的服务器。 – Leonel 2009-10-16 14:06:04

回答

135

引述maven documentation on this

简档元素包含两个任选的活化(轮廓触发器)和设定到POM以作出如果所选择的文档已被激活的变化。例如,为测试环境构建的项目可能会指向与最终部署不同的数据库。 或者依赖关系可能会根据所用的JDK版本从不同的存储库中提取。

(重点是我的)

只要把依赖的文件声明本身内部的release配置文件和debug这样做。

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

此方法将导致代码在编辑模式下无法解析。如果调试处于活动状态,则发行版的依赖关系jar将会丢失,并且代码将会出错。如何解决它? – brucenan 2016-12-02 07:28:50

+0

您可以将依赖关系层次结构中的发布特定依赖项的作用域设置为“提供”,并在发布配置文件部分将该作用域重置为“编译”。因此,依赖关系可用于编译,但不适用于“调试”配置文件的最终战争。 – uday 2017-02-20 22:50:51

3

您的groupId,artifactId应该在配置文件中作为属性进行标记,并且可以将您的依赖关系移动到通用部分。