* Gradle - ビルドツール [#n3b340ec] #setlinebreak(on) &color(red){書きかけの記事}; #contents -- 関連 --- [[Gradleでjarの取得だけを行う]] --- [[GradleでJavaの差分ビルド]] ** Gradle とは [#bddbb17b] #html(<div style="padding-left:20px;">) Gradle はAndroid Atudio のビルドツールとして採用されるなど、次世代のビルドツールとして注目されている。 ビルド用のスクリプトは GroovyのDSL で簡潔に記述することができる一方で、複雑な箇所は Groovyスクリプトで記述する事も可能。 CoC(設定を超える規約)に則っており、規約に従う事によってビルドスクリプト記述量が大幅に削減できるうえに、 デフォルト設定の上書きも可能な為、規約にハマらない場合にも対応可能となっている。 ※フォルダ構成等の規約は 基本的に Maven と同じ。 #html(</div>) ** インストール方法 [#r60e8d9d] #html(<div style="padding-left:20px;">) (1) 公式サイトのDOWNLOADS からGradleをダウンロード http://gradle.org/gradle-download/ (2) ダウンロードしたzipを解凍し、環境変数 GRADLE_HOME に解凍したディレクトリのPATHを設定する (3) GRADLE_HOME/bin にPATHを通す #html(</div>) ** Gradleプロジェクトの作成 [#e667d617] #myterm2(){{ 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 ** 動作確認を兼ねた練習 [#w2143f55] #html(<div style="padding-left:20px;">) 簡単なタスクを作成し、実行してみる *** build.gradle の作成 [#k913b4cc] #html(<div style="padding-left:20px;">) 適当なディレクトリを作成し、配下に以下のファイルを作成する。(ファイル名:build.gradle) #mycode(){{ // テスト用タスクの実行 task hello << { println "hello!" } }} #html(</div>) *** タスクの実行 [#nbd68d3e] #html(<div style="padding-left:20px;">) #myterm(){{ gradle hello }} 結果: #myterm(){{ :hello hello! BUILD SUCCESSFUL Total time: 2.415 secs }} #html(</div>) #html(</div>) ** Gradleが期待する基本的なディレクトリ構成 [#be751964] #html(<div style="padding-left:20px;">) 規約に従ったディレクトリ構成の場合は、ビルドスクリプトの大幅な記述量削減が可能となる。 ただし Maven と違い、記述を加える事によって規約に合わないディレクトリ構成でもビルドが可能となっている。 以下、Gradleが期待するディレクトリ構成(Mavenと同じ) プロジェクトルート +--- build.gradle(ビルドスクリプト) +--- src +--- main | +--- java | +--- resources(propertiesファイルなど) | +--- config | +--- webapp (webアプリの場合) | +--- WEB-INF | +--- classes | +--- lib | +--- web.xml | +--- test +--- java +--- resources #html(</div>) ** タスク [#q6188be6] #html(<div style="padding-left:20px;">) "gradle" に続けてタスク名を入力する事で、該当のタスクを実行する事ができる #myterm(){{ gradle init --type java-library }} 以下、主なタスクの一覧(他、詳細は後述) |タスク|説明|実行例|h |init|プロジェクトを作成する|gradle init --type java-library| |assemble|コンパイルを実行しJAR、WAR、ZIP、TARファイルなどを作る|| |build|assemble後にテストを実行する|| |buildDependents|そのプロジェクト“が”依存するプロジェクトを含めbuildを実行する|| |classes|メインクラスをassembleする|| |clean|成果物(buildディレクトリ配下)を削除する|| |compileJava|プロダクトのコンパイルを行う|| |compileTestJava|テストコードをコンパイルする|| |jar|メインクラスを含むJarファイルを作成する|| |processResources|プロダクトのリソースをクラスディレクトリにコピーする|| |processTestResources|テストリソースをテストクラスディレクトリにコピーする|| |testClasses|テストクラスをassembleする|| |uploadArchives|成果物をアップロードする|| |tasks|実行可能なタスクを確認する|| #html(</div>) ** 基本形 [#kf1480e4] #mycode2(){{ 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' } }} ** タスクの依存関係について [#m9f47a44] #html(<div style="padding-left:20px;">) #html(</div>) ** ビルドファイルの記述方法 [#sb22fce8] #html(<div style="padding-left:20px;">) *** プラグインの追加 [#f3c6dfe7] #html(<div style="padding-left:20px;">) #html(</div>) *** デフォルトタスクの設定 [#zfe6ca2e] #html(<div style="padding-left:20px;">) #mycode(){{ defaultTasks 'タスク名1' 'タスク名2' }} #html(</div>) *** 新規タスクの追加 [#z3ba9d52] #html(<div style="padding-left:20px;">) #html(</div>) *** タスクの依存関係設定 [#p1aaabc5] #html(<div style="padding-left:20px;">) #html(</div>) *** プラグインの追加 [#pb4dbfbd] #html(<div style="padding-left:20px;">) #html(</div>) *** Tomcatプラグインについて [#q2d62ed6] #html(<div style="padding-left:20px;">) https://github.com/bmuschko/gradle-tomcat-plugin #html(</div>) #html(</div>)