Gradle init¶
JDKとGradleにPATHを通した状態で gradle init
を実行します。
対話的にいくつかの設定を指示すると、プロジェクトのディレクトリ・ファイルが生成されます。
以下はGradle 8.11で実行したときの例です。
サンプル1 単一のアプリケーションモジュール¶
mainメソッドを持ち、実行可能なJavaアプリケーションのモジュール1つからなるGradleプロジェクトを生成します。
ここでいうGradleのモジュールは、成果物(JARファイル)を生成する単位となります。
hello % gradle init Select type of project to generate: 1: Application 2: Library 3: Gradle plugin 4: Basic (build structure only) Enter selection (default: Application) [1..4] 1 <--- Java実行可能プロジェクト Select implementation language: 1: Java 2: Kotlin 3: Groovy 4: Scala 5: C++ 6: Swift Enter selection (default: Java) [1..6] 1 <--- Java Enter target Java version (min: 7, default: 21): <--- 使用するJDKバージョンを指定 Project name (default: hello): Select application structure: 1: Single application project 2: Application and library project Enter selection (default: Single application project) [1..2] 1 <--- 単一モジュール Select build script DSL: 1: Kotlin 2: Groovy Enter selection (default: Kotlin) [1..2] 1 <--- build.gradleの記述はKotlinで Select test framework: 1: JUnit 4 2: TestNG 3: Spock 4: JUnit Jupiter Enter selection (default: JUnit Jupiter) [1..4] 4 <--- JUnit5 を使う Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no] no <--- 新しいAPI(将来変更の可能性あり)を使うビルド設定を生成する > Task :init Learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.11.1/samples/sample_building_java_applications.html BUILD SUCCESSFUL in 3m 30s 1 actionable tasks: 1 executed hello %
Gradleのinitタスクを実行すると、対話的にプロジェクトの種類や設定を入力し、それに従ったプロジェクトディレクトリ・ファイルが生成されます。このディレクトリ構造は次となります。
hello % tree -a . ├── .gitattributes ├── .gitignore ├── app │ ├── build.gradle.kts │ └── src │ ├── main │ │ ├── java │ │ │ └── org │ │ │ └── example │ │ │ └── App.java │ │ └── resources │ └── test │ ├── java │ │ └── org │ │ └── example │ │ └── AppTest.java │ └── resources ├── gradle │ ├── libs.versions.toml │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat └── settings.gradle.kts
build.gradle.kts¶
ビルドの定義はbuild.gradle.ktsファイルに記述します。initタスク(プロジェクト種類:application、言語:Java)で生成されたbuild.gradle.ktsの内容(コメント行を除く)は次です。
plugins {
application
}
repositories {
mavenCentral()
}
dependencies {
testImplementation(libs.junit.jupiter)
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
implementation(libs.guava)
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
application {
mainClass = "org.example.App"
}
tasks.named<Test>("test") {
useJUnitPlatform()
}
dependenciesのライブラリ定義¶
Ver.8.6以降では、JUnitのAPIとGuavaのAPIのライブラリが、これまでと違う表記で定義されています。
testImplementation(libs.junit.jupiter) implementation(libs.guava)
この定義は、gradleディレクトリにある libs.versions.toml
ファイルに記述されています。
# This file was generated by the Gradle 'init' task. # https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format [versions] guava = "33.2.1-jre" junit-jupiter = "5.10.3" [libraries] guava = { module = "com.google.guava:guava", version.ref = "guava" } junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter" }
サブプロジェクトを跨って、依存ライブラリを一元的に定義することができます。
App.java¶
initタスクでは、指定したパッケージにmainメソッドを持つ雛形クラスのソースファイルが1つ生成されます。
- app/src/main/java/org/example/App.java
package org.example; public class App { public String getGreeting() { return "Hello world!"; } public static void main(String[] args) { System.out.println(new App().getGreeting()); } }
.gitignore¶
gitリポジトリに登録しないgradleプロジェクトのディレクトリを設定したgit無視ファイルが生成されます。
- .gitignore
.gradle build
.gitattributes¶
gitリポジトリに登録する際のファイル属性を設定したgit属性ファイルが生成されます。
- .gitattributes
/gradlew text eol=lf *.bat text eol=crlf *.jar binary
サンプル2 複数モジュールのプロジェクト¶
mainメソッドを持ち、実行可能なJavaアプリケーションのモジュールと、アプリケーションから利用されるライブラリモジュールからなるGradleプロジェクトを生成します。
hello % gradle init
Select type of build to generate:
1: Application
2: Library
3: Gradle plugin
4: Basic (build structure only)
Enter selection (default: Application) [1..4] 1
Select implementation language:
1: Java
2: Kotlin
3: Groovy
4: Scala
5: C++
6: Swift
Enter selection (default: Java) [1..6] 1
Enter target Java version (min: 7, default: 21):
Project name (default: hello):
Select application structure:
1: Single application project
2: Application and library project
Enter selection (default: Single application project) [1..2] 2
Select build script DSL:
1: Kotlin
2: Groovy
Enter selection (default: Kotlin) [1..2] 1
Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no]
> Task :init
Learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.11.1/samples/sample_building_java_applications_multi_project.html
BUILD SUCCESSFUL in 29s
1 actionable task: 1 executed
hello %
生成されたディレクトリは次です。
├── .gitattributes ├── .gitignore ├── app │ ├── build.gradle.kts │ └── src │ ├── main │ │ ├── java │ │ │ └── org │ │ │ └── example │ │ │ └── app │ │ │ ├── App.java │ │ │ └── MessageUtils.java │ │ └── resources │ └── test │ ├── java │ │ └── org │ │ └── example │ │ └── app │ │ └── MessageUtilsTest.java │ └── resources ├── buildSrc │ ├── build.gradle.kts │ ├── settings.gradle.kts │ └── src │ └── main │ └── kotlin │ ├── buildlogic.java-application-conventions.gradle.kts │ ├── buildlogic.java-common-conventions.gradle.kts │ └── buildlogic.java-library-conventions.gradle.kts ├── gradle │ ├── libs.versions.toml │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── list │ ├── build.gradle.kts │ └── src │ ├── main │ │ ├── java │ │ │ └── org │ │ │ └── example │ │ │ └── list │ │ │ └── LinkedList.java │ │ └── resources │ └── test │ ├── java │ │ └── org │ │ └── example │ │ └── list │ │ └── LinkedListTest.java │ └── resources ├── settings.gradle.kts └── utilities ├── build.gradle.kts └── src ├── main │ ├── java │ │ └── org │ │ └── example │ │ └── utilities │ │ ├── JoinUtils.java │ │ ├── SplitUtils.java │ │ └── StringUtils.java │ └── resources └── test └── resources
サンプルとして生成されるモジュールは、app、list、utilitiesの3つです。