ねこ元帥の中の人@リウマチ

日々の覚書など。ブログ名はオンラインゲームのアカウント名をいつも「ねこ元帥」にしているから。そして、2013年11月リウマチと診断されたとです。(2012年11月から時々手足に原因不明の痛みが発生、2013年9月以降は足の痛みが常態化、2013年12月30日からMTX服用開始、4月過ぎるころにはわずかの痛みが残る程度まで回復して現在に至る。)

gradle 使用メモ

Gradleラッパー

第59章 Gradleラッパー

build.gradle に以下の設定を記述する。(タスク名wrapperは任意の名前でよい)

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


以下のコマンドを実行

gradle wrapper


下記ファイルが追加される。

project
├─gradle
│  └─wrapper
│      ├─gradle-wrapper.jar
│      └─gradle-wrapper.properties
├─gradlew
└─gradlew.bat

gradlewコマンドはタスク設定で指定したバージョンのgradleをダウンロードして実行するスクリプトとなっており、ビルドツリーに登録しておくことで、実行環境にインストールされているgradleのバージョンに関係なく、指定したバージョンのgradleを使用することができる。

マルチプロジェクト

第56章 マルチプロジェクトのビルド

settings.gradle に以下の設定を記述する。(https://github.com/gradle/gradle を参考にした)

// includeでサブプロジェクトを指定する。
include 'appMain'
include 'appData'

// サブプロジェクトのディレクトリ名とビルド設定ファイル名をカスタマイズする。
// デフォルト構成で使用するのであれば不要な処理だが、サブプロジェクトの
// ディレクトリが多い場合はディレクトリを分けておいた方が見やすい。
rootProject.children.each {project ->
    String fileBaseName = project.name.replaceAll("\\p{Upper}") { "-${it.toLowerCase()}" }
    String projectDirName = "subprojects/$fileBaseName"
    project.projectDir = new File(settingsDir, projectDirName)
    project.buildFileName = "${fileBaseName}.gradle"
    assert project.projectDir.isDirectory()
    assert project.buildFile.isFile()
}


build.gradle を以下の通り設定する。(scalaを使用する)

//引数なしでgradlewを実行した場合にデフォルトで実行するタスクを設定
defaultTasks 'build'

//distZipタスクで配布ファイルを作成するための設定
apply plugin: 'application'
mainClassName = "com.github.tkmtmkt.Main"

//全プロジェクト共通の設定
allprojects {
    group = 'com.github.tkmtmkt'
    version = '1.0-SNAPSHOT'

    repositories {
        mavenCentral()
        flatDir {
            dirs "$rootDir/lib"
        }
    }
}

//サブプロジェクト共通の設定
//※このファイルではルートプロジェクトに対する設定を行っている
subprojects {
    apply plugin: 'scala'

    //依存ライブラリの指定
    dependencies {
        compile 'org.scala-lang:scala-library:2.10.2'
        compile 'org.slf4j:slf4j-log4j12:1.7.5'
        compile name: 'coherence'
        testCompile 'junit:junit:4.+'
        testCompile 'org.specs2:specs2_2.10:2.1'
        testCompile 'org.mockito:mockito-core:1.9.5'
    }

    //jarファイルのマニフェストファイルに記述する内容を指定
    jar {
        manifest {
            attributes("Implementation-Title": project.name,
                       "Implementation-Version": version)
        }
    }
}

//ルートプロジェクトの依存ライブラリ指定
//ルートプロジェクトではサブプロジェクトをまとめて
//配布パッケージを作成するために使用する。
dependencies {
    runtime project(':appMain')
    runtime project(':appData')
}

//gradleラッパー作成用の設定
task wrapper(type: Wrapper) {
    description = 'Generates Gradle wrapper scripts.'
    gradleVersion = '1.6'
}

ビルド環境

第20章 ビルド環境

gradle.properties でビルド環境を設定する。

# デーモン有効化
org.gradle.daemon=true

# プロキシ設定
systemProp.http.proxyHost=www.somehost.org
systemProp.http.proxyPort=8080


Gradleデーモンを有効にしておくと、jvmが常駐されてコマンド実行が早くなる。
第19章 Gradleデーモン


デーモンプロセスを停止する。

gradlew --stop


デーモンを起動せずにコマンドを実行する。(CIで実行する場合など)

gradlew -D org.gradle.daemon=false

最後に

メモ書きのためbuild.gradleのコメント日本語で書いたが、実環境でbuild.gradleに日本語のコメント記入するとビルドできない。気が向いたら調べる。