[Java] IntelliJ IDEA不同項目的依賴與引用


相關文章

[Java] IntelliJ IDEA 2019.3.1創建完整的Spring Boot項目

[Java] IntelliJ IDEA通過gradle搭建spring boot多模塊項目

 

環境

IntelliJ IDEA 2019.3.1

gradle: https://services.gradle.org/distributions/gradle-5.2.1-all.zip

Java: 8

 

關於如何在IntelliJ IDEA,如何通過gradle建立多模式項目,在相關文章里面已有說明,就不再詳細闡述。

先看我們本次文章的代碼目錄結構

▾ id-center/
  ▸ common/
  ▸ gradle/
  ▸ out/
  ▸ src/
    build.gradle
    gradle.properties
    gradlew*
    gradlew.bat
    settings.gradle
▾ pea-core/                                                                                                                 
  ▸ build/
  ▸ gradle/
  ▸ src/
    build.gradle
    gradlew*
    gradlew.bat
    settings.gradle

id-center項目,是微服務的一個子系統。pea-core項目,是各個微服務共用的類庫。id-center項目是依賴於pea-core項目的。

有些人會說,那我可以將pea-core打包成jar,然后在 id-center引進來就可以了。的確,這種方法也是解法之一。這里不打包jar的原因是,pea-core會經常變動,而在團隊開發的時候,不斷的要打包jar然后分發給各個同事也是一件很繁瑣的事來的,所以干脆將pea-core作為依賴,引入到id-center項目當中。

 

關於pea-core就不多說了,當作普通的gradle項目來建立就好,不懂的請看上面列的相關文章,或者google。關鍵是id-center的引用

id-center/settings.gradle

rootProject.name = 'id-center'
include('pea-core')
// !!!FBI WARNING!!!關鍵代碼
project(':pea-core').projectDir=file('../pea-core')

id-center/build.gradle

buildscript {
    repositories {
        mavenLocal()
        maven {
            url "http://maven.aliyun.com/nexus/content/groups/public/"
        }
        maven {
            url "https://oss.sonatype.org/content/groups/public/"
        }
        maven {
            url "https://repo.spring.io/libs-milestone/"
        }
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        // classpath "se.transmode.gradle:gradle-docker:${transmodeGradleDockerVersion}"
    }
}
allprojects {
    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'idea'

    group = 'com.ppwang.services.idcenter'
    version = '1.0-SNAPSHOT'
    sourceCompatibility = 1.8

    repositories {
        mavenLocal()
        maven {
            url "http://maven.aliyun.com/nexus/content/groups/public/"
        }
        maven {
            url "https://oss.sonatype.org/content/groups/public/"
        }
        maven {
            url "https://repo.spring.io/libs-milestone/"
        }
        jcenter()
        mavenCentral()
    }

    dependencies {
        // !!!FBI WARNING!!!關鍵代碼,如果不加這個,會導致錯誤Recursively include external project and its subprojects
        if (!project.name.startsWith('pea')) {
            implementation project(':pea-core')
        }
        testImplementation "org.springframework.boot:spring-boot-starter-test"
    }

    dependencyManagement {
        imports {
            mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
        }
    }

    // 這里一定得要。在多模塊下,不然編譯失敗,因為不會把信賴模塊給打包。
    jar {
        enabled = true
    }
}

注意以上就夠了,至於其它問題也沒那么難了

 

還有,引進其它項目的某些模塊作為依賴,還可以這么操作

id-center/settings.gradle

include "shared-library"
project(":shared-library").projectDir = new File("/projects/shared-library")

include "shared-library:module2"
project('shared-library:module2').name = ':module2'

include "shared-library:module1"
project('shared-library:module1').name = ':module1'

id-center/build.gradle

implementation project(":module1")

 

Have fun with Java!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM