【Gradle】Gradle ~あれこれ編~

  ■ ビルド時にテストを実行しないようにするには

  サンプル

gradle build -x test 

  参考文献

http://anton0825.hatenablog.com/entry/2014/11/19/000000

 

  ■ ファイル内の特定文字列を置換する

 * org.apache.tools.ant.filters.ReplaceTokens を使う

  フォルダ構成

project
 + etc
 |  + hello_world.properties
 + build.gradle

  サンプル

project/etc/hello_world.properties
user=@___USER_NAME___@
password=@___PASSWORD___@
build.gradle
task helloWorld(type: Copy) {
    def userName = 'admin'
    def password = 'password01'
    
    from 'etc'
    into buildDir
    include 'hello_world.properties'
    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [
        ___USER_NAME___: userName,
        ___PASSWORD___: password
    ])
}

  出力結果

build/hello_world.properties
user=admin
password=password01

  補足:buildDir について

http://gradle.monochromeroad.com/docs/userguide/writing_build_scripts.html
より
 * name       : プロジェクトディレクトリの名前
 * path       : プロジェクトの絶対パス
 * projectDir : ビルドスクリプトのあるディレクトリ
 * buildDir   : projectDir/build

  参考文献

https://dev.classmethod.jp/server-side/gradle/gradle-first-contact/

 

  ■ サブプロジェクトを含めてビルドするには

  前提条件

 * サブプロジェクトも Gradle でビルドできること

  フォルダ構成

workspace
 + RootProject
 |  + build.gradle
 |  + settings.gradle
 |
 + SubProject
    + build.gradle
    + settings.gradle

  サンプル

RootProject/settings.gradle
rootProject.name = 'RootProject'
includeFlat ':SubProject'
RootProject/build.gradle
dependencies {
   compile project(':SubProject')
}

 

  ■ 実行ファイル作成

  【1】アプリケーションを纏めてzip化

 * 実行に必要なファイルをZip化(内容は以下の「解凍後のフォルダ構成」参照)
build.gradle
apply plugin: 'application'

// アプリケーションのメインクラス
mainClassName = 'com.sample.Main'
// Zipのファイル名に付与するバージョン番号
version = '1.0.0'
// JVMの引数(ヒープサイズなど)
applicationDefaultJvmArgs = ['-Xms512m', '-Xmx512m']

distZip {
    baseName = 'HelloWorld'
}
// or distZip.baseName = 'HelloWorld'
実行コマンド
gradle distZip

// Eclipse
//  gradlew distZip

// 【生成物】.\build\distributions\HelloWorld-1.0.0.zip が生成される
解凍後のフォルダ構成
 * bin  : 起動スクリプト(Windows/Linux)
 * lib  : jar 及び依存 jar ファイル

  参考文献

http://gradle.monochromeroad.com/docs/userguide/application_plugin.html
https://qiita.com/opengl-8080/items/4c1aa85b4737bd362d9e
https://int128.hatenablog.com/entry/2014/12/10/080000

 

  ■ 文字化け対策

「Gradle: エラー: この文字は、エンコーディングMS932にマップできません」
がでるので、その対策。

  サンプル

build.gradle
def defaultEncoding = 'UTF-8'

tasks.withType(Compile) {
    options.encoding = defaultEncoding
}

  参考文献

http://anton0825.hatenablog.com/entry/2015/03/30/000000

 

  ■ 外部ファイルから値を取得するには

 * ant でいう「build.properties」的なもの
https://blogs.yahoo.co.jp/dk521123/33989901.html
 * 「gradle.properties」を用意し「getProperty("【キー】")」で取得する

  サンプル

gradle.properties
hello.world=This is hello world!
build.gradle
def hello = getProperty("hello.world")
println "Result : " + hello

  参考文献

https://qiita.com/hatimiti/items/a127311d739c9d3e0045

 

  関連記事

  Gradle ~入門編~

https://blogs.yahoo.co.jp/dk521123/35915819.html