Java Gradle控件可从依赖项build.Gradle传递

Java Gradle控件可从依赖项build.Gradle传递,java,spring-boot,gradle,spring-boot-gradle-plugin,Java,Spring Boot,Gradle,Spring Boot Gradle Plugin,我不确定这是否可行,但想得到一些关于这个问题的意见/解决方案 我正在创建一个新的依赖项com。示例:app dep:1.0.1将在com中使用。示例:app作为编译依赖项 app-dep有一个依赖项io.undertow:undertow-core:2.0.1.Final这是我不想在com中使用的。示例:app项目,因为我从com中排除了类文件。示例:app-dep与undertow相关,因为类需要开发时间,但在生产中不需要 当我在com中添加com.example:app dep:1.0.1时

我不确定这是否可行,但想得到一些关于这个问题的意见/解决方案

我正在创建一个新的依赖项
com。示例:app dep:1.0.1
将在
com中使用。示例:app
作为
编译
依赖项

app-dep
有一个依赖项
io.undertow:undertow-core:2.0.1.Final
这是我不想在
com中使用的。示例:app
项目,因为我从
com中排除了类文件。示例:app-dep
undertow
相关,因为类需要开发时间,但在生产中不需要

当我在
com中添加
com.example:app dep:1.0.1
时。example:app
我想排除
io.undertow:undertow core:2.0.1.Final

但是我想从
com控制它。例如:app dep:1.0.1
将来可能会启用。

我试过的一些渐变

尝试1

app dep-build.gradle

制作应用程序build.gradle 使用
spring引导渐变插件
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。下拖:下拖核心:2.0.1。最终
在生产spring boot jar中

尝试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构建时会说以下内容

Undertow服务器=Undertow.builder().addHttpListener(8081, “localhost”).setHandler(routingHandler.build(); ^ 符号:可变底拖 位置:class ExampleServer 26个错误

我能做但我不想要的

生产应用程序build.gradle


因为我想从
app-dep

控制这一点,到目前为止,我理解您希望在生产项目中动态排除,而不是使用
exclude
。您能澄清一下您的意思吗?依赖关系
app-dep
在“开发时”是必需的-这是否意味着您需要在dev box上运行,而不是在生产环境中运行-或者依赖项是“仅编译”?在第一种情况下,可以使用概要文件-在第二种情况下,compileOnly应该足够了(请参见)@JonathanJohx correct好的,那么通常当您有一个具有多个依赖项的大型项目,这些依赖项应该被排除或包括在
prod
dev
中时,您应该使用
概要文件
作为依赖项,如果它是
prod
你可以添加/排除,也许这个答案可以帮助你。@JonathanJohx我试过了,运气不好,在问题
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'
    }
}
dependencies {
  compile('com.example:app-dep:1.0.1') {
    exclude(module: 'com.example.app-dep')
  }
}