Исключить транзитивную зависимость плагина Gradle - PullRequest
1 голос
/ 02 июня 2019

Исключить транзитивную зависимость в Gradle довольно просто:

compile('com.example.m:m:1.0') {
     exclude group: 'org.unwanted', module: 'x'
  }

Как бы нам обойти ситуацию, в которой мы используем плагин:

apply: "somePlugin"

И при получении зависимостеймы понимаем, что плагин приносит некоторые собственные транзитивные зависимости?

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Вы можете манипулировать classpath самого buildscript через:

buildscript {
    configurations {
        classpath {
            exclude group: 'org', module: 'foo' // For a global exclude
        }
    }
    dependencies {
        classpath('org:bar:1.0') {
            exclude group: 'org', module: 'baz' // For excluding baz from bar but not if brought elsewhere
        }
    }
}
1 голос
/ 02 июня 2019

Вы можете удалить зависимости после применения плагина (из одной конфигурации или для всех конфигураций), используя, например,.compile.exclude.Обратите внимание, что compile разрешается в «Конфигурации»;см. javadocs в Configuration.exclude .

edit

Имейте в виду, что исключение зависимостей может завершиться ошибкой, если конфигурация уже была разрешен .


Пример сценария

apply plugin: 'java-library'

repositories {
    jcenter()
}

dependencies {
    compile 'junit:junit:4.12'
    compile 'ant:ant:1.6'
    compile 'org.apache.commons:commons-lang3:3.8'
}

// remove dependencies
configurations.all {
  exclude group:'junit', module:'junit'
}
configurations.compile {
  exclude group:'org.apache.commons', module: 'commons-lang3'
}

println 'compile deps:\n' + configurations.compile.asPath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...