什么是Grails Build Config Transitive = false

时间:2016-03-09 02:17:14

标签: grails pom.xml grails-plugin buildconfig

我注意到在我们的构建配置中插件中有transitive = false这是什么意思?做excludes

时有什么不同

excludes 'code-coverage', 'maven-publisher', 'codenarc'

1 个答案:

答案 0 :(得分:0)

您可以在earlier documentation中找到解释:

  

禁用传递依赖关系解析

     

默认情况下,Grails不仅会获得您的JAR和插件   声明,但它也将获得它们的传递依赖。这是   通常你想要什么,但有时候你想要一个   没有全部包袱的依赖。在这种情况下,您可以禁用   根据具体情况进行传递依赖性解决:

runtime('com.mysql:mysql-connector-java:5.1.16',
        'net.sf.ehcache:ehcache:1.6.1') {
    transitive = false
}

// Or
runtime group:'com.mysql',
        name:'mysql-connector-java',
        version:'5.1.16',
        transitive:false
     

排除特定的传递依赖

     

更常见的情况是你想要传递的地方   依赖项,但其中一些会导致您自己的依赖项出现问题   或者是不必要的。例如,许多Apache项目都有   'commons-logging'作为传递依赖,但它不应该   包含在Grails项目中(我们使用SLF4J)。这就是排除的地方   选项进来:

runtime('com.mysql:mysql-connector-java:5.1.16',
        'net.sf.ehcache:ehcache:1.6.1') {
    excludes "xml-apis", "commons-logging"
}

// Or
runtime(group:'com.mysql', name:'mysql-connector-java', version:'5.1.16') {
    excludes([ group: 'xml-apis', name: 'xml-apis'],
             [ group: 'org.apache.httpcomponents' ],
             [ name: 'commons-logging' ])
     

如您所见,您可以通过工件排除依赖项   ID(也称为模块名称)或组和的任意组合   工件ID(如果使用Map表示法)。你可能也会遇到   也可以排除,但只能接受单个字符串或Map:

runtime('com.mysql:mysql-connector-java:5.1.16',
        'net.sf.ehcache:ehcache:1.6.1') {
    exclude "xml-apis"
}