$ sudo apt intsall gradle
$ gradle init --type java-library
まぁ、コマンドラインじゃなくても IDE (Eclipse/Netbeans/IntelliJ) に任せればよかろう
$ tree . └── JettyExam ├── LICENSE ├── README.md ├── bin │ ├── main/ ← コンパイル結果 │ └── test/ ← コンパイル結果 ├── build / ← ビルド結果 (プロジェクト全体を zip 圧縮したものや、製品の jar など) ├── build.gradle ← ★これが gradle スクリプト ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ← ★これが、このプロジェクト向けの設定が入った gralde 実行スクリプト。プロジェクト作成時に自動生成される ├── gradlew.bat ← ★その Windows用 ├── settings.gradle └── src ├── main │ ├── java/ ← ソースコード │ └── resources/ ← 設定ファイル類 └── test ├── java/ ← テストコード └── resources / ← テストデータ類
$ gradlew build
$ gradlew test
$ gradlew javadoc
buildscript { ext.buildConfig = [ 'compileSdk': 11, 'targetSdk': 11 ] ext.versions = [ 'jetty': '9.4.25.v20191220', 'jersey': '2.30', 'derby': '10.15.1.3' ] }
とすると、${buildConfig.compileSdk} や ${versions.jettty} で、値を参照できる
plugins { // check library versions // $ ./gradlew dependencyUpdates id "com.github.ben-manes.versions" version "0.27.0" }
というように build.gradle を書いておき、コマンドラインから
$ ./gradlew dependencyUpdates
を実行すると最新のライブラリが使われているか調べることができる
plugins { id "com.github.johnrengelman.shadow" version "4.0.4" }
で全部盛りJarが作られる
jar { manifest { attributes "Main-Class" : "com.example.jetty.Main" } }
で Jar の MANIFEST に属性を書き込むことができる
mainClassName = 'com.example.jetty.Main'
sourceCompatibility = "${buildConfig.compileSdk}" // -source targetCompatibility = "${buildConfig.targetSdk}" // -target' mainClassName = "${buildConfig.main}" compileJava { options.encoding = 'UTF-8' options.compilerArgs << '-Xlint:unchecked' }
dependencies { // https://mvnrepository.com/artifact/commons-cli/commons-cli compile 'commons-cli:commons-cli:1.4' ... }
compile 'commons-cli:commons-cli:1.4'は、
compile group: 'commons-cli', name: 'commons-cli', version: '1.4'の省略形
compile ("org.glassfish.jersey.containers:jersey-container-jetty-http:${versions.jersey}") { exclude group : 'org.eclipse.jetty', module : 'jetty-util' }
test { testLogging { events 'standard_out', 'standard_error' } }
repositories { google() mavenCentral() jcenter() }
println "Target SDK is ${buildConfig.targetSdk} => Use Derby ${versions.derby8}"
if (buildConfig.targetSdk < 9) { println "Target SDK is ${buildConfig.targetSdk} => Use Derby ${versions.derby8}" compile "org.apache.derby:derby:${versions.derby8}" compile "org.apache.derby:derbytools:${versions.derby8}" } else { println "Target SDK is ${buildConfig.targetSdk} => User Derby ${versions.derby}" compile "org.apache.derby:derby:${versions.derby}" compile "org.apache.derby:derbytools:${versions.derby}" compile "org.apache.derby:derbyshared:${versions.derby}" }
上記のように条件分岐がいるのは、Apache Derby が、Java 8 用と Java 9 or higher 用で異なるため。ライブラリパッケージの構成も異なる。