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 / ← テストデータ類

ビルドコマンド

ひな型

https://github.com/kagyuu/JettyExam/blob/master/build.gradle

Tips

定数定義

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

を実行すると最新のライブラリが使われているか調べることができる

全部盛りJar (Fat Jar) を作る

plugins {
 id "com.github.johnrengelman.shadow" version "4.0.4"
}

で全部盛りJarが作られる

java -jar で実行されるクラスの指定

jar {
    manifest {
        attributes "Main-Class" : "com.example.jetty.Main"
    }
}

で Jar の MANIFEST に属性を書き込むことができる

gradlew run で実行されるクラスの指定

mainClassName = 'com.example.jetty.Main'

javac のオプションの指定

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 ("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'
    }
}

ライブラリの参照先を google, maven-central, jcenter にする

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 用で異なるため。ライブラリパッケージの構成も異なる。


Java#Jetty


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2020-02-27 (木) 02:42:24 (374d)
Short-URL: https://hondou.homedns.org:443/pukiwiki/index.php?cmd=s&k=b2933373c5
ISBN10
ISBN13
9784061426061