Gradle を手っ取り早く使うための手順
少し使えるようになったら、以下を読むとぐっと理解が深まります(groovy知らない人は特に)
Groovyを知らない人のためのbuild.gradle読み書き入門
インストール
https://gradle.org/install/#manually からバイナリをダウンロードして展開、bin ディレクトリにパスを通して終わり
export GRADLE_HOME=・・・
export PATH="${GRADLE_HOME}/bin:${PATH}"
ディレクトリ構成
以下の通りディレクトリを作る。Maven のプラグイン開発に則ってるみたいだけど、深く考えない。トップディレクトリが jar の名前になる
[トップディレクトリ]
+-- build.gradle
+-- src/
+-- main/
+-- groovy/
+-- java/
+-- resources/
+-- test/
+ main 配下と同じなので略
main 配下の役割は以下の通り
- build.gradle: make の Makefile。ant の build.xml に相当するファイル
- groovy: groovy ファイルを入れる
- java: Java のソースコード
- resources: property、画像(アイコン)などを入れる。gradle で run するときの classpath として自動的にはいる。この中のディレクトリファイルは本体の jar にも含まれるので、含めたくないものはここに置かないようにする
コンパイル
main/src/java に適当なコードをつっこんで、build.gradle ファイルを以下一行を記載
apply plugin: 'java'
gradle build を実行
トップディレクトリ配下に build ディレクトリが作成され、色々ファイルができてる。すごい。この時点で ant との決別を決意
build
|-- classes
| `-- java
| `-- main
| `-- Test.class
|-- distributions
| |-- sandbox.tar
| `-- sandbox.zip
|-- libs
| `-- sandbox.jar
|-- scripts
| |-- sandbox
| `-- sandbox.bat
`-- tmp
|-- compileJava
`-- jar
`-- MANIFEST.MF
クラスパスの追加
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
runtime files('src/main/dist/lib/properties')
}
- compile に指定したものは、一律配布物の lib ディレクトリに含めてくれる
- runtime は含めない(含めたい場合は以下)
実行
build.gradle に以下二行を追加し、gradle run を実行するだけ
apply plugin: 'application'
mainClassName = '実行したいクラス名'
プロパティファイルなど、classpath 探索するものがあれば、resources ディレクトリに入れておく
配布物に影響があるので、dependencies を使って適宜設定
ただ動かすだけなら resources に突っ込んでおけば OK
実行時の classpath の追加は以下を build.gradle に追加(以下はディレクトリを追加した例)。ここは普通に filetree など、ご自由に
dependencies {
runtime files('src/main/dist/lib/properties')
}
配布物
build/distributions/ 配下にある tar(zip) ファイルが必要なものがjar,起動シェルなど一式が入ったファイル。これを展開すればよい
Java のソースコードだけであれば、内容は以下の通り
# tar tvf build/distributions/sandbox.tar
drwxr-xr-x 0/0 0 2017-10-14 09:54 sandbox/
drwxr-xr-x 0/0 0 2017-10-14 09:54 sandbox/lib/
-rw-r--r-- 0/0 885 2017-10-14 09:54 sandbox/lib/sandbox.jar
drwxr-xr-x 0/0 0 2017-10-14 09:54 sandbox/bin/
-rwxr-xr-x 0/0 5210 2017-10-14 09:54 sandbox/bin/sandbox
-rwxr-xr-x 0/0 2180 2017-10-14 09:54 sandbox/bin/sandbox.bat
この配布物に property ファイルを追加する場合の手順
結論は、配布物に以下構成で property ファイルを追加
+-- sandbox
+-- lib/properties/~~.properties <-- 追加
+-- bin/
lib ディレクトリ配下ってのが、うーんという感じだが、build.gradle をあまりいじらないでやるにはこれがいいっぽい
やりかた
property ファイルは以下の通り配置する
[トップディレクトリ]
+-- build.gradle
+-- src/
+-- main/
+-- dist/
+-- lib/
+-- properties/
+ ~~.properties
build.gradle に以下追加
startScripts {
classpath += files('dist/lib/properties')
}
よくわからないけど、files('dist/properties')
でもできる。
dist 配下は、dist/lib/~~~ にしないとダメ。lib ディレクトリぬかすと、配布物の直下ディレクトリに properties ディレクトリができちゃう
gradle build すれば、最初に書いた通り、lib/properties ディレクトリに含めてくれ且つ、起動 script の CLASSPATH にも追加してくれる
この起動 script への CLASSPATH の追加がネックで。$APP_HOME/lib/~~ になってしまうので、この構成にするしかない、、、
以前は dist と resources でシンボリックリンク案も書いたが、resources ディレクトリの物は本体の jar ファイルの中に含まれてしまうので、property を外出ししたい場合は NG
ただし、運用中にいじらない property なら resources ディレクトリに突っ込んで OK