第一個專案

我選擇第一個要修改的專案,無相依於任何專案,只要達到能在Eclipse上編譯完成且通過測試即可。

至於環境安裝與設定可以參考網上教學: link

專案狀態

首先調整的是一個被許多專案所參考的Common專案,目前它參考於CommonLibraries中的jar檔,這也是我以往的麻煩處。要更新一個jar檔往往要動到一堆使用到的專案。

轉換為Gradle專案

接著我們按照 對專案點擊右鍵 > Configure > Convert to Gradle Project 的步驟,將專案轉為Gradle專案:

可以發現專案圖式上有個G,且程式碼資料夾與相依jar檔都消失了:

新增build.gradle

build.gradle即build script,直接在專案目錄下建立此檔案即可。

建立Source Folder

由於我是java且要用於eclipse的專案,所以我在腳本中,引用了java與eclipse兩個plugin。sourceSets分別宣告了src、test與tools三個資料夾,如果專案是按照慣例方式建立,並不需要特別去設立sourceSets。

apply plugin: 'java' 
apply plugin: 'eclipse'
 
sourceSets {
 	main {
    	  java {
      		srcDir  'src'
    	  }
  	}
  	test {
    	  java {
      		srcDir  'test'
    	  }
  	}
  	tools {
    	  java {
      		srcDir  'tools'
    	  }
  	}
}
在加入以上腳本後,對專案 點擊右鍵 > Gradle > Refresh Source Folders:

完成後會將設定的資料夾設為Source Folders,但因為沒加入任何相依的jar檔,應會出現編譯錯誤。

加入相依函式庫

Gradle可以透過我們所定義的reposiotry去尋找我們所相依的jar檔,這裡我直接使用Maven的Central Repository。而相依定義的部分,我使用了compile、runtime與testCompile,

  • compile: 編譯production source所使用的函示庫。
  • runtime: 執行期間所使用的函示庫。
  • testCompile: 編譯test source所使用的函示庫。

以下是我的設定,供給大家參考:

repositories {
    mavenCentral()
}
dependencies {
    compile 'log4j:log4j:1.2.16'
    compile 'org.slf4j:slf4j-api:1.7+'
    compile 'net.java.dev.jna:jna:4+'
    compile 'net.java.dev.jna:platform:3+'    
    compile 'javax.ws.rs:javax.ws.rs-api:2+'
    compile 'org.glassfish.jersey.core:jersey-client:2.14'
    compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.14' 
 
    runtime 'org.ow2.asm:asm:5+'
    runtime 'org.apache.commons:commons-lang3:3+'
    runtime 'commons-logging:commons-logging:1.1.1'
 
    testCompile 'org.powermock:powermock-core:1.6+'
    testCompile 'org.powermock:powermock-api-easymock:1.6+'
    testCompile 'org.powermock:powermock-mockito-release-full:1.6+'
    testCompile 'org.easymock:easymock:3.3'
    testCompile 'junit:junit:4.11'
}
完成後,對專案 點擊右鍵 > Gradle > Refresh Dependencies,即可看到程式碼通通編過了。

對於第一個專案,我要求先做到能夠在Eclipse上開發。在本文章學習到:

  • 轉換既有專案為Gradle專案。
  • 設定Source資料夾。
  • 設定相依函式庫。

在下篇文章中,我會挑相依於此專案的專案來做修改。

Source與Libraries刷新

我們可以在Preference中,找到Gradle項目裡的Enale automatic refresh,去啟動自動刷新。

Convension Over Configuration

在Gradle中,可以透過少少的設定就能做到大部分的事情。舉例來說,sourceSets是可以不必要的,前提是專案程式碼配置是依照maven“慣例”,如src/main/java或src/test/java。