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'
   }
}

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

Gradle構建JAVA項目

將以下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文件。