Gradle構建JAVA專案


本章介紹如何使用Gradle構建檔案來構建一個Java專案。 首先,我們必須向構建指令碼中新增Java外掛,因為它提供了編譯Java原始碼,執行單元測試,建立Javadoc和建立JAR檔案的任務。 在build.gradle檔案中使用以下程式碼行。

apply plugin: 'java'

怎麼樣,是不是很簡單?

Java預設的專案布局

每當新增一個外掛到構建中,它會假設一個特定的Java專案設定(類似於Maven)。看看下面的目錄結構。

  • src/main/java 目錄包含Java原始碼;
  • src/test/java 目錄包含測試用的原始碼;

如果遵循上面設定,以下構建檔案足以編譯,測試並綑綁Java專案。
要啟動構建,請在命令列上鍵入以下命令。

D:/worksp/gradle> gradle build

SourceSets可用於指定不同的專案結構。例如,指定原始碼儲存在src檔案夾中,而不是在src/main/java中。 看看下面的目錄結構。

apply plugin: 'java'
sourceSets {
   main {
      java {
         srcDir 'src'
      }
   }

   test {
      java {
         srcDir 'test'
      }
   }
}

初始化任務執行

Gradle還不支援多個專案模板。但它提供了一個init來初始化任務來建立一個新的Gradle專案的結構。如果沒有指定其他引數,任務將建立一個Gradle專案,其中包含gradle包裝器檔案,build.gradlesettings.gradle檔案。

當使用java-library作為值並新增--type引數時,將建立一個java專案結構,build.gradle檔案包含帶有Junit的某個Java模板。 看看下面build.gradle檔案的程式碼。

apply plugin: 'java'

repositories {
   jcenter()
}

dependencies {
   compile 'org.slf4j:slf4j-api:1.7.12'
   testCompile 'junit:junit:4.12'
}

在倉庫(repositories)這部分中,它定義了要從哪裡找到依賴。Jcenter是為了解決依賴問題。 依賴關係(dependencies)部分用於提供有關外部依賴關係的資訊。

指定Java版本

通常,Java專案要有一個版本和一個目標JRE,在其上編譯它。versionsourceCompatibility屬性可以在build.gradle檔案中設定。

version = 0.1.1
sourceCompatibility = 1.8

如果這是一個可執行的Java應用程式,MANIFEST.MF檔案必須要指定具有main方法的類。

apply plugin: 'java'

jar {
   manifest {
      attributes 'Main-Class': 'com.yiibai.main.Application'
   }
}

讓我們考慮一個例子。建立一個目錄結構,如下面的螢幕截圖所示。

將以下Java程式碼複製到App.java檔案中,並將其儲存到 D:/worksp/gradle/src/main/java/com/yiibai 目錄中。

package com.yiibai;

/**
* Hello world!
*
*/

public class App {
   public static void main( String[] args ){
      System.out.println( "Hello World, Gradle Build Work! " );
   }
}

將以下Java程式碼複製到AppTset.java檔案中,並儲存到D:/worksp/gradle/src/test/java/com/yiibai目錄中。

package com.yiibai;

/**
* Hello world!
*
*/

public class App{
   public static void main( String[] args ){
      System.out.println( "Hello World!" );
   }
}

將以下程式碼複製到build.gradle檔案中,並放入 D:/worksp/gradle 目錄。

apply plugin: 'java'

repositories {
   jcenter()
}

dependencies {
   compile 'org.slf4j:slf4j-api:1.7.12'
   testCompile 'junit:junit:4.12'
}

jar {
   manifest {
      attributes 'Main-Class': 'com.yiibai.main.App'
   }
}

要編譯和執行上述指令碼,請使用以下命令。

D:/worksp/gradle> gradle tasks
....
D:/worksp/gradle> gradle assemble
....
D:/worksp/gradle> gradle build
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:test
:check
:build

BUILD SUCCESSFUL

Total time: 1.638 secs

檢視相應目錄中的所有類檔案,並檢查 D:/worksp/gradle/build/libs檔案夾中,應該會有一個 gradle.jar檔案。