2016-03-09 7 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 артефакт (также известный как имя модуля) или любую комбинацию группы и идентификаторы артефакта (если вы используете обозначение карты). Вы также можете встретить исключают, а, но может принимать только одну строку или Map:

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