我有多个项目构建结构,并且Spring Boot从父级应用到所有子项目。这是父级 build.gradle
create_container
在多个子项目中,我只需要将一个子项目升级到Spring Boot 2版本。怎么做?
答案 0 :(得分:0)
这很简单,只需直接在子项目中声明使用插件的位置即可。顺便说一句,请考虑使用new plugins
DSL而不是apply
。看看我为您创建的demo project。这是最有趣的部分:
settings.gradle :
rootProject.name = "so53381565"
enableFeaturePreview("IMPROVED_POM_SUPPORT")
include(":a")
include(":b")
include(":c")
build.gradle :
subprojects {
apply plugin: "java"
repositories {
jcenter()
}
}
wrapper {
gradleVersion = "4.10.2"
distributionType = Wrapper.DistributionType.ALL
}
a / build.gradle :
plugins {
id "org.springframework.boot" version "1.5.8.RELEASE"
}
dependencies {
implementation "org.springframework.boot:spring-boot-starter"
}
b / build.gradle :
plugins {
id "org.springframework.boot" version "1.5.17.RELEASE"
}
dependencies {
implementation "org.springframework.boot:spring-boot-starter"
}
c / build.gradle :
plugins {
id "org.springframework.boot" version "2.0.6.RELEASE"
}
dependencies {
implementation "org.springframework.boot:spring-boot-dependencies:2.0.6.RELEASE"
implementation "org.springframework.boot:spring-boot-starter"
}
App.java :
@SpringBootApplication
public class App implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println(SpringVersion.getVersion());
}
}
App.java
在所有三个子项目中都相同。执行./gradlew clean :a:bootRun :b:bootRun :c:bootRun
将输出如下内容:
…
4.3.12.RELEASE
…
4.3.20.RELEASE
…
5.0.10.RELEASE
…
如您所见,您正在三个不同的子项目中使用三个不同的Spring。
编辑
首先,您仍然可以使用apply
,只需将它们放在子项目中即可。
第二,您可以对自己的存储库和依赖项使用plugins
,即使没有在Gradle的插件存储库by adding pluginManagement
中settings.gradle
块中发布的存储库和依赖项中也是如此(这是我项目中的Kotlin DSL):
pluginManagement {
repositories {
gradlePluginPortal()
add(jcenter())
add(maven("http://my.jfrog.io"))
}
resolutionStrategy {
eachPlugin {
if (requested.id.id == "by.dev.madhead.some-plugin") {
useModule("by.dev.madhead:some-gradle-plugin:${requested.version}")
}
}
}
}
现在,我可以在整个项目的by.dev.madhead.some-plugin
DSL中使用plugins
:
plugins {
id("by.dev.madhead.some-plugin").version("42")
}
它将被by.dev.madhead:some-gradle-plugin:42