2016-03-09 89 views

回答

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符號)。您也可能會遇到 排除爲好,但只能接受一個字符串或地圖:

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