Gradle入門

Gradle入門

Spring bootでGradleの知識が必要だったので、Gradleをインストールしてみました。

インストールサイト

前提条件:Java JDK or JRE 7以上

gradle-5.1.1-bin.zipをダウンロードしてc:\gradleにでも配置します。

C:\gradle\binをPATHに追加します。次にバージョンを確認してみます。

C:\Users\takahashi>gradle -v

Welcome to Gradle 5.1.1!

Here are the highlights of this release:
- Control which dependencies can be retrieved from which repositories
- Production-ready configuration avoidance APIs

For more details see https://docs.gradle.org/5.1.1/release-notes.html

------------------------------------------------------------
Gradle 5.1.1
------------------------------------------------------------

Build time: 2019-01-10 23:05:02 UTC
Revision: 3c9abb645fb83932c44e8610642393ad62116807

Kotlin DSL: 1.1.1
Kotlin: 1.3.11
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM: 1.8.0_191 (Oracle Corporation 25.191-b12)
OS: Windows 10 10.0 amd64

5.1.1が入っていることが確認できます。

次にGradle Wrapperを作成します。Spring Bootにあるgradle\wrapper\gradle-wrapper.jarなどのことを指します。

C:\workspace\gradle-project>gradle wrapper
Starting a Gradle Daemon (subsequent builds will be faster)

BUILD SUCCESSFUL in 6s
1 actionable task: 1 executed

これで以下構成が作成されるはずです。

C:.
│ gradlew
│ gradlew.bat
│
├─.gradle
│ ├─5.1.1
│ │ │ gc.properties
│ │ │
│ │ ├─executionHistory
│ │ │ executionHistory.bin
│ │ │ executionHistory.lock
│ │ │
│ │ ├─fileChanges
│ │ │ last-build.bin
│ │ │
│ │ └─fileHashes
│ │ fileHashes.bin
│ │ fileHashes.lock
│ │
│ └─buildOutputCleanup
│ buildOutputCleanup.lock
│ cache.properties
│ outputFiles.bin
│
└─gradle
└─wrapper
     gradle-wrapper.jar
     gradle-wrapper.properties

この構成をSVNなどにコミットしておけばgradlewコマンドで全メンバーがビルドができるようになります。以降、gradleではなくgradlewコマンドを使います。

gradlew initコマンドでJavaアプリケーションの雛形を作成します。

C:\workspace\gradle-project>gradlew init --type java-application

Select build script DSL:
1: groovy
2: kotlin
Enter selection (default: groovy) [1..2] 1

Select test framework:
1: junit
2: testng
3: spock
Enter selection (default: junit) [1..3] 1

Project name (default: gradle-project): sample
Source package (default: sample):

BUILD SUCCESSFUL in 36s
2 actionable tasks: 1 executed, 1 up-to-date
C:\workspace\gradle-project>

これでsrc/main/java/sample/App.javaが作成されていると思います。

gradlew buildでビルドします。ビルドが終わると、buildフォルダが作成されてその配下にclassファイルなどが作成されます。

gradlew runでプロジェクトを実行します。

C:\workspace\gradle-project>gradlew run

> Task :run
Hello world.

BUILD SUCCESSFUL in 0s
2 actionable tasks: 1 executed, 1 up-to-date
C:\workspace\gradle-project>

Hello world.と標準出力されることが確認できます。

taskを確認する

デフォルトでいくつかtaskが用意されているので、gradlew tasksで確認します。

C:\workspace\gradle-project>gradlew tasks

> Task :tasks

------------------------------------------------------------
Tasks runnable from root project
------------------------------------------------------------

Application tasks
-----------------
run - Runs this project as a JVM application

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
buildDependents - Assembles and tests this project and all projects that depend on it.
buildNeeded - Assembles and tests this project and all projects it depends on.
classes - Assembles main classes.
clean - Deletes the build directory.
jar - Assembles a jar archive containing the main classes.
testClasses - Assembles test classes.

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Distribution tasks
------------------
assembleDist - Assembles the main distributions
distTar - Bundles the project as a distribution.
distZip - Bundles the project as a distribution.
installDist - Installs the project as a distribution as-is.

Documentation tasks
-------------------
javadoc - Generates Javadoc API documentation for the main source code.

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'sample'.
components - Displays the components produced by root project 'sample'. [incubating]
dependencies - Displays all dependencies declared in root project 'sample'.
dependencyInsight - Displays the insight into a specific dependency in root project 'sample'.
dependentComponents - Displays the dependent components of components in root project 'sample'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'sample'. [incubating]
projects - Displays the sub-projects of root project 'sample'.
properties - Displays the properties of root project 'sample'.
tasks - Displays the tasks runnable from root project 'sample'.

Verification tasks
------------------
check - Runs all checks.
test - Runs the unit tests.

Rules
-----
Pattern: clean<TaskName>: Cleans the output files of a task.
Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration.
Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration.

To see all tasks and more detail, run gradlew tasks --all

To see more detail about a task, run gradlew help --task <task>

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
C:\workspace\gradle-project>

色々ありますが、gradlew cleanでbuildディレクトリを削除することができ、gradlew buildでビルドしてbuildディレクトリが作成されるようです。

gradlew runで実行します。

続けて、gradlew clean build runと書くことができるようです。

gladlew jarでbuild\libs配下にjarファイルなんかも作成してくれます。

build.gradleをいじる

Spring bootにも存在するbuild.gradleですが、これにタスクを追加したりしてみます。

build.gradle自体はgroovyで書かれているのでMavenのxmlファイルよりもプログラミングっぽいです。

build.gradleにタスクを定義してみます。

plugins {
    id 'java'
    id 'application'
}

repositories {
    jcenter()
}

dependencies {
    implementation 'com.google.guava:guava:26.0-jre'
}
// 追記
mainClassName = 'sample.App'task hello {

task hello {
  doLast {
    println 'aaaaaa!'
  }
}

これで、gradlew helloとすると標準出力されます。

C:\workspace\gradle-project>gradlew hello

> Task :hello
aaaaaa!

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
C:\workspace\gradle-project>

タスクの依存関係

dependsOnを使ってタスク間に依存関係を持たせることができます。

task hello {
  doLast {
    println 'aaaaaa!'
  }
}

task bye(dependsOn: hello) {
  doLast {
    println 'bye!'
  }
}

実行する際は、gradlew -q byeというように-qオプションを使用します。

C:\workspace\gradle-project>gradlew -q bye
aaaaaa!
bye!
C:\workspace\gradle-project>

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました