我注意到在我们的构建配置中插件中有transitive = false
这是什么意思?做excludes
即
excludes 'code-coverage', 'maven-publisher', 'codenarc'
答案 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" }