我注意到,在我們的構建配置中,插件中有一個transitive = false
這是什麼意思?做一個excludes
即什麼是Grails構建配置Transitive = false
excludes 'code-coverage', 'maven-publisher', 'codenarc'
我注意到,在我們的構建配置中,插件中有一個transitive = false
這是什麼意思?做一個excludes
即什麼是Grails構建配置Transitive = false
excludes 'code-coverage', 'maven-publisher', 'codenarc'
時,您可以在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符號)。您也可能會遇到 排除爲好,但只能接受一個字符串或地圖:
runtime('com.mysql:mysql-connector-java:5.1.16', 'net.sf.ehcache:ehcache:1.6.1') { exclude "xml-apis" }