gpt4 book ai didi

java - 用不同的Spring Boot插件Gradle多个子项目

转载 作者:行者123 更新时间:2023-12-03 03:26:35 25 4
gpt4 key购买 nike

我有多个项目构建结构,并且Spring Boot从父级应用到所有子项目。这是父 build.gradle

buildscript {
repositories {
maven {
url 'http://someurl.com/repository/MavenRepositoryGroup/'
}
}

dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:1.5.8.RELEASE"
}
}


subprojects {

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'
..
..
..
}
}

在多个子项目中,我需要仅将 一个子项目升级到spring boot 2版本。怎么做?

最佳答案

这很简单,只需直接在子项目中声明使用插件的位置即可。顺便说一句,考虑使用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代替

关于java - 用不同的Spring Boot插件Gradle多个子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53381565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com