2017-03-11 75 views
1

因此,我只是在使用gradle和spring-boot進行(試驗)。如何使用gradle中的子模塊設置彈簧啓動

當我按照hello的世界,我很容易讓項目運行哪種讓我開心。

現在我想要一個結構化的項目;爲此我使用Intellij社區(不確定是否相關)。我有以下結構。

/項目 - 的build.gradle - settings.gradle(僅包括服務) /項目/服務/ - 的build.gradle - settings.gradle(僅包括爲MyService) /項目/服務/ MyServices - build.gradle

現在我可以共享我的一些build.gradle文件,但我嘗試隨機的東西,我在網上找到我的問題是春季引導類不可用在MyService。 Myservice裏面是標準的Java(/ src/main/java)

如果可能,我試圖在我的主build.gradle中放置依賴關係&版本。有人能指出我做錯了什麼嗎?

目前我只使用gradle進行簡單的android開發工作。

/Project/build.gradle

group 'nl.msegers.project' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 
apply plugin: 'idea' 

sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

/Project/Services/build.gradle

group 'nl.msegers.project.services' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.2.RELEASE") 
    } 
} 

/Project/Services/MyService/build.gradle

group 'nl.msegers.project.services.myservice' 
version parent.version 

apply plugin: 'java' 
apply plugin: 'idea' 
apply plugin: 'org.springframework.boot' 

jar { 
    baseName = 'Navigation' 
    version = parent.version 
} 

repositories { 
    mavenCentral() 
} 

sourceCompatibility = 1.8 
targetCompatibility = 1.8 

回答

0

我一直在網上衝刷一個小時左右,得到這樣的結構工作。與此同時,我也從頭開始重建我的項目(儘管我沒有太多的代碼)。

我的代碼目前允許簡單的Spring引導子項目沒有太多的冗餘配置,他們可以很容易地編譯庫項目,但是這可以使用一些工作。

我現在得到的是一個像這樣的結構。

/項目 /項目/庫 /項目/庫/模型 /項目/服務/ /工程/服務/服務

隨着唯一顯着的構建。gradle這個文件(也近乎空):

/項目/服務/

group 'nl.msegers.project.services' 
version parent.version 

buildscript { 
    ext { 
     springBootVersion = "1.5.2.RELEASE" 
    } 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
} 

subprojects { 
    buildscript { 
     ext { 
      springBootVersion = "1.5.2.RELEASE" 
     } 
     repositories { 
      mavenCentral() 
     } 
     dependencies { 
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
     } 
    } 
    apply plugin: 'java' 
    apply plugin: 'org.springframework.boot' 


    dependencies { 

     compile("org.springframework.boot:spring-boot-starter-web") { 
      exclude module: "spring-boot-starter-tomcat" 
     } 
     compile("org.springframework.boot:spring-boot-starter-jetty") 
     compile("org.springframework.boot:spring-boot-starter-actuator") 

     compile project(':Libraries:Models') 

     testCompile 'junit:junit:4.12' 
    } 

    task wrapper(type: Wrapper) { 
     gradleVersion = '3.1' 
    } 
} 

/項目/服務/爲MyService

group 'nl.msegers.project.services.myservice' 
version parent.version 

jar { 
    baseName = 'myservice' 
    version = parent.version 
} 

repositories { 
    mavenCentral() 
} 
1

要讓每個項目都從根繼承依賴項,您可以在根項目上使用allprojects腳本塊lik e:

allprojects { 
      dependencies { 
     compile group: 'commons-collections', name: 'commons-collections', version: '3.+' 
     ... 
    } 
} 
+0

這也將爲子項目工作? 雖然我的問題是,當我在同一級別的build.gradle中定義時,依賴關係甚至沒有加載。 –

+0

此問題是因爲您在一個地方爲springboot定義了buildscript,並將該插件應用於其他位置,請參閱:https://docs.gradle.org/current/userguide/plugins.html#sec:applying_plugins_buildscript – Adonis

+0

雖然也許你的回答讓我走向正確的方向。我的解決方法稍有不同。還有我的服務中包含的/ Libraries/Modules項目。我會用我今天在某個地方所做的一切來創建一個單獨的答案。 –