Gradle - ビルドツール

書きかけの記事

Gradle とは

Gradle はAndroid Atudio のビルドツールとして採用されるなど、次世代のビルドツールとして注目されている。
ビルド用のスクリプトは GroovyのDSL で簡潔に記述することができる一方で、複雑な箇所は Groovyスクリプトで記述する事も可能。
CoC(設定を超える規約)に則っており、規約に従う事によってビルドスクリプト記述量が大幅に削減できるうえに、
デフォルト設定の上書きも可能な為、規約にハマらない場合にも対応可能となっている。
※フォルダ構成等の規約は 基本的に Maven と同じ。

インストール方法

(1) 公式サイトのDOWNLOADS からGradleをダウンロード
http://gradle.org/gradle-download/

(2) ダウンロードしたzipを解凍し、環境変数 GRADLE_HOME に解凍したディレクトリのPATHを設定する

(3) GRADLE_HOME/bin にPATHを通す

Gradleプロジェクトの作成

gradle init --type java-library

type には pom、java-application、java-library、scala-library、groovy-library、groovy-application、basic などが指定できる。
https://docs.gradle.org/current/userguide/build_init_plugin.html

動作確認を兼ねた練習

簡単なタスクを作成し、実行してみる

build.gradle の作成

適当なディレクトリを作成し、配下に以下のファイルを作成する。(ファイル名:build.gradle)

// テスト用タスクの実行
task hello << {
    println  "hello!"
} 

タスクの実行

gradle hello

結果:

:hello
hello!

BUILD SUCCESSFUL

Total time: 2.415 secs

Gradleが期待する基本的なディレクトリ構成

規約に従ったディレクトリ構成の場合は、ビルドスクリプトの大幅な記述量削減が可能となる。
ただし Maven と違い、記述を加える事によって規約に合わないディレクトリ構成でもビルドが可能となっている。
以下、Gradleが期待するディレクトリ構成(Mavenと同じ)

プロジェクトルート  
+--- build.gradle(ビルドスクリプト)  
+--- src  
      +--- main
      |     +--- java
      |     +--- resources(propertiesファイルなど)  
      |     +--- config
      |     +--- webapp (webアプリの場合)
      |                +--- WEB-INF
      |                            +--- classes
      |                            +--- lib
      |                            +--- web.xml
      |  
      +--- test
            +--- java
            +--- resources

タスク

"gradle" に続けてタスク名を入力する事で、該当のタスクを実行する事ができる

gradle init --type java-library

以下、主なタスクの一覧(他、詳細は後述)

タスク説明実行例
initプロジェクトを作成するgradle init --type java-library
gradle init --type java-application
assembleコンパイルを実行しJAR、WAR、ZIP、TARファイルなどを作る
buildassemble後にテストを実行する
buildDependentsそのプロジェクト“が”依存するプロジェクトを含めbuildを実行する
classesメインクラスをassembleする
clean成果物(buildディレクトリ配下)を削除する
compileJavaプロダクトのコンパイルを行う
compileTestJavaテストコードをコンパイルする
jarメインクラスを含むJarファイルを作成する
processResourcesプロダクトのリソースをクラスディレクトリにコピーする
processTestResourcesテストリソースをテストクラスディレクトリにコピーする
testClassesテストクラスをassembleする
uploadArchives成果物をアップロードする
tasks実行可能なタスクを確認する

基本形

apply plugin: 'java'

// In this section you declare where to find the dependencies of your project
repositories {
    jcenter()
}

jar {
    manifest {
        // net.magata.example.TestMain をメインクラスとする場合
        attributes 'Main-Class': 'net.magata.example.TestMain'
    }
}

dependencies {
    compile 'グループID:アーティファクトID:バージョン'

    // Use JUnit test framework
    testImplementation 'junit:junit:X.XX'
}

プラグインの追加

build.gradle

apply plugin: 'java'
apply plugin: 'application'

または

plugins {
    id 'java'
    id 'application'
}

デフォルトタスクの設定

build.gradle

defaultTasks 'タスク名1'  'タスク名2'

コマンドライン引数をメインクラスに渡す

build.gradle

run {
    if (project.hasProperty('args')) {
        args project.args.split('\\s+')
    }
}

実行例

gradle run -Pargs="arg1 arg2"

JVMパラメータを指定する

build.gradle

applicationDefaultJvmArgs = ["-Xms1024m", "-Xmx1024m"]

http://gradle.monochromeroad.com/docs/userguide/application_plugin.html

関連: JavaVMのチューニングメモ

メインクラスを指定する

build.gradle

mainClassName = "org.gradle.sample.Main"

コマンドライン引数で指定されたクラスを実行する

build.gradle

run {
    // 引数で指定されたクラスを実行する
    if (project.hasProperty('main')) {    
        main(project.main)
    }   
}

実行例

gradle run -Pmain="TestApp1"

※TestApp1.java の main メソッドが実行される。


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS