Я не уверен, что это возможно, но хотел получить некоторые комментарии / решение для этой проблемы.
Я создаю новую зависимость 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