简体   繁体   English

Gradle、Kotlin:如何在 intellij 中添加另一个 Spring Boot 项目作为模块依赖项

[英]Gradle, Kotlin : How to add another spring boot project as a module dependency in intellij

I have two spring boot projects我有两个 Spring Boot 项目

Project1 (Spring boot project)
   |
   |--build.gradle
   |--settings.gradle
   |--src/main/kotlin

Project2 (Spring boot project)
   |
   |--build.gradle
   |--settings.gradle
   |--src/main/kotlin

Project2 is dependent on Project1.项目 2 依赖于项目 1。 Could someone tell me how to add this dependency (eg modify build.gradle and settings.gradle) so that these projects should work fine.有人可以告诉我如何添加此依赖项(例如修改 build.gradle 和 settings.gradle),以便这些项目可以正常工作。 I have tried a lot of resources, but no luck to achieve that.我尝试了很多资源,但没有运气实现这一目标。

PS: Both Project1 and Project2 are spring boot Kotlin projects and they work fine individually. PS:Project1 和 Project2 都是 Spring Boot Kotlin 项目,它们单独运行良好。 I want to reuse some functionality of Project1 into Project2 and I am not able to do it.我想将 Project1 的某些功能重用到 Project2 中,但我无法做到。

Also, Project1 and Project2 are at the same directory level.此外,Project1 和 Project2 位于同一目录级别。

Any help would be highly appreciated.任何帮助将不胜感激。

Root project根项目

As first step you need add root project with two subprojects.作为第一步,您需要添加具有两个子项目的根项目。

settings.gradle.kts

rootProject.name = "demo-root"

include(
        "project1",
        "project2"
)

build.gradle.kts

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    base
    kotlin("jvm") version "1.3.71" apply true
    id("java-library")
    id("org.springframework.boot") version "2.2.6.RELEASE" apply false
    id("io.spring.dependency-management") version "1.0.9.RELEASE" apply false
    id("org.jetbrains.kotlin.plugin.jpa") version "1.3.71" apply false
    kotlin("plugin.spring") version "1.3.71" apply false
}

allprojects {
    group = "com.dempcompany"
    version = "0.0.1-SNAPSHOT"

    repositories {
        mavenCentral()
    }

//    apply {
//        plugin("kotlin")
//    }

    tasks.withType<JavaCompile> {
        sourceCompatibility = "13"
        targetCompatibility = "13"
    }

    tasks.withType<KotlinCompile> {
        kotlinOptions {
            jvmTarget = "12"
        }
    }
}

subprojects {
//    apply {
//        plugin("io.spring.dependency-management")
//    }
}

dependencies {
    subprojects.forEach {
        // Make the root project archives configuration depend on every subproject
        archives(it)
    }
}

Project1项目1

Then configure build configuration for project1然后为project1配置构建配置

project1/build.gradle.kts

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    base
    kotlin("jvm") version "1.3.71" apply true
    id("java-library")
    id("org.springframework.boot") version "2.2.6.RELEASE" apply false
    id("io.spring.dependency-management") version "1.0.9.RELEASE" apply false
    id("org.jetbrains.kotlin.plugin.jpa") version "1.3.71" apply false
    kotlin("plugin.spring") version "1.3.71" apply false
}

allprojects {
    group = "com.democompany"
    version = "0.0.1-SNAPSHOT"

    repositories {
        mavenCentral()
    }

//    apply {
//        plugin("kotlin")
//    }

    tasks.withType<JavaCompile> {
        sourceCompatibility = "13"
        targetCompatibility = "13"
    }

    tasks.withType<KotlinCompile> {
        kotlinOptions {
            jvmTarget = "12"
        }
    }
}

subprojects {
//    apply {
//        plugin("io.spring.dependency-management")
//    }
}

dependencies {
    subprojects.forEach {
        // Make the root project archives configuration depend on every subproject
        archives(it)
    }
}

project1/setting.gradle.kts

rootProject.name = "project1"

Project2项目2

And then configure build configuration for project2然后为project2配置构建配置

project2/build.gradle.kts

plugins {
    id("org.springframework.boot")
    id("io.spring.dependency-management")
    kotlin("jvm")
    kotlin("plugin.spring")
}

repositories {
    mavenCentral()
    maven("https://jitpack.io")
}

java.sourceCompatibility = JavaVersion.VERSION_13

dependencies {
    /* Project modules */
    implementation(project(":project1", "default"))

    /* Spring Framework */
    implementation("org.springframework.boot:spring-boot-starter")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    
    /* Kotlin */
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3")
}

project2/settings.gradle.kts

rootProject.name = "project2"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM