2016-05-13 106 views
0

這是我的文件層次結構,'域模塊'現在沒有代碼,基本上是DBController和Domain的包裝器。Gradle + Java,多項目build.gradle

Domain Module 
    .gradle 
    .idea 
    build 
    DBController 
     build 
     src 
      main 
       java 
        interfaces 
         IDBController.java 
        DBController.java 
      res 
       some SQL files 
      test 
       java 
        some test files 
     build.gradle 

    Domain 
     .gradle 
     build 
     gradle 
     src 
      main 
       java 
        Server.java 
     build.gradle 
     gradlew 
     gradlew.bat 
     settings.gradle 
    gradle 
    build.gradle 
    gradlew 
    gradlew.bat 
    settings.gradle 

這是我在域模塊/的build.gradle的build.gradle

group 'Group' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 
targetCompatibility = 1.8 
sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile project(':Domain') 
    compile project(':DBController') 
} 

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

這是在的build.gradle域模塊/ DBController /的build.gradle

group 'Group' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 
    compileJava { 
     sourceCompatibility = 1.8 
     targetCompatibility = 1.8 
    } 

buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'org.postgresql:postgresql:9.3-1103-jdbc3' 
    } 
} 

repositories { 
    mavenCentral() 
} 

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

dependencies { 
    compile('com.googlecode.json-simple:json-simple:1.1.1') 
    compile files('libs/json-simple-1.1.1.jar') 
    compile('org.postgresql:postgresql:9.3-1103-jdbc3') 
} 

最後,在域模塊/域/ build.gradle中構建.gradle

group 'Group' 
version '1.0-SNAPSHOT' 

buildscript { 
    repositories { 
     mavenCentral() 
     jcenter() 
    } 
} 

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

repositories { 
    mavenCentral() 
    jcenter() 
} 

sourceCompatibility = 8 
targetCompatibility = 8 

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

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

dependencies { 
    compile project(':DBController') 
} 

我的主要方法是在Server.java中,它使用了DBController的一個實例。我如何在我的java清單中分配這個文件?我已經嘗試了簡單

jar { 
    manifest { 
     attributes 'Main-Class': 'Domain.src.main.java.Server' 

} 

但每當我試圖執行的罐子-The在域模塊/編譯/ libs- 我得到一個錯誤,告訴我它無法找到主文件生成的JAR的Java,而現在的構建階段,它給了我一個錯誤,說根本沒有提及主類。

我的項目的要點是DBController向SQL服務器發出查詢,Server.java將是一個彈簧服務器。我決定使用gradle來做到這一點,所以我會學習,雖然我已經學到了很多關於gradle的知識,但仍然有很多不確定性。

回答

0

我剛纔發現什麼是錯的。

jar { 
    manifest { 
    attributes 'Main-Class': '-insert main class here-' 
    } 
} 

這個屬性假設你在src /主/ java的目錄開始用的時候,所以如果我的文件路徑是

src/main/java/robert/util/Class.java 

我只想不得不說

jar { 
    manifest { 
    attributes 'Main-Class': 'robert.util.Class' 
    } 
} 

花了這麼多時間來解決這樣一個微不足道的錯誤。我對其他人的建議是不要忽視'介紹gradle'網站等。解決方案一直存在。