Управление Gradle переходное от зависимости build.gradle - PullRequest
0 голосов
/ 14 октября 2019

Я не уверен, что это возможно, но хотел получить некоторые комментарии / решение для этой проблемы.

Я создаю новую зависимость com.example:app-dep:1.0.1 будет использоваться в com.example:app как compile зависимость.

app-dep с зависимостью io.undertow:undertow-core:2.0.1.Final, которую я не хочу в com.example:app проекте, потому что я исключаю файл класса из com.example:app-dep, относящегося к undertow, потому что класс требует разработкивремя, но не требуется в производстве.

Когда я добавляю com.example:app-dep:1.0.1 в com.example:app, я хочу исключить io.undertow:undertow-core:2.0.1.Final.

Но я хочу контролировать это с com.example:app-dep:1.0.1, возможно, включить в будущем.

Некоторые градлЯ пробовал

TRY 1

app-dep - build.gradle

dependencies {
  implementation('io.undertow:undertow-core:2.0.1.Final') {
    transitive = true
  }
  implementation('io.undertow:undertow-servlet:2.0.1.Final') {
    transitive = false
  }
}
jar {
    from sourceSets.main.allSource
    excludes = ['com/example/ExampleServer**', 'public']
}

production-app build.gradle с использованием spring-boot-gradle-plugin bootRepackage

buildscript {
  dependencies {
    classpath "org.springframework.boot:spring-boot-gradle-plugin:1.5.12.RELEASE"
  }
}
dependencies {
  compile 'com.example:app-dep:1.0.1'
}

ВЫХОД: Все еще вытягивая и добавляя io.undertow:undertow-core:2.0.1.Final в рабочую банку с пружинной загрузкой

TRY 2

Использование профилей

dependencies {
    compile 'org.apache.commons:commons-lang3:3.4'
    testCompile 'org.mockito:mockito-core:3.1.0'
    testCompile 'org.powermock:powermock-module-junit4:1.6.6'
    testCompile 'org.powermock:powermock-api-mockito:1.6.6'
    if(isDev) {
        implementation 'io.undertow:undertow-core:2.0.1.Final'
    }
}

ВЫХОД: Класс внутри app-dep выдает ошибку компиляции, говоря следующее при выполнении ./gradlew build

Сервер отката =Undertow.builder (). AddHttpListener (8081, "localhost"). SetHandler (routingHandler) .build ();^ символ: переменная Расположение в нижней части: класс ExampleServer 26 ошибок

Что я могу сделать, но не хочу

В сборке производственного приложения.gradle

dependencies {
  compile('com.example:app-dep:1.0.1') {
    exclude(module: 'com.example.app-dep')
  }
}

Потому что я хочу контролировать это с app-dep

...