Я заметил, что в нашей конфигурации сборки есть transitive = false
в плагинах, что это значит? какая разница при выполнении в excludes
т.е.Что такое Grails Build Config Transitive = false
excludes 'code-coverage', 'maven-publisher', 'codenarc'
Я заметил, что в нашей конфигурации сборки есть transitive = false
в плагинах, что это значит? какая разница при выполнении в excludes
т.е.Что такое Grails Build Config 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 артефакт (также известный как имя модуля) или любую комбинацию группы и идентификаторы артефакта (если вы используете обозначение карты). Вы также можете встретить исключают, а, но может принимать только одну строку или Map:
runtime('com.mysql:mysql-connector-java:5.1.16', 'net.sf.ehcache:ehcache:1.6.1') { exclude "xml-apis" }