プロジェクト

全般

プロフィール

Gradle init 8.7

JDKとGradleにPATHを通した状態で gradle init を実行します。
対話的にいくつかの設定を指示すると、プロジェクトのディレクトリ・ファイルが生成されます。

以下はGradle 8.7で実行したときの例です。

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: HelloApp): 

Select application structure:
  1: Single application project
  2: Application and library project
Enter selection (default: Single application project) [1..2] 1 <--- サブプロジェクトを1つまたは複数

Select build script DSL:
  1: Kotlin
  2: Groovy
Enter selection (default: Groovy) [1..2] 1            <--- build.gradleの記述はKotlinで

Select test framework:
  1: JUnit 4
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 4           <--- JUnit5 を使う

Project name (default: hello):                        <--- ディレクトリ名と同じでよければ[Enter]キー入力                               
Enter target version of Java (min. 7) (default: 21):  <--- デフォルトで良いので[Enter]キー入力

Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no] 

> Task :init
To learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.7/samples/sample_building_java_applications.html

BUILD SUCCESSFUL in 2m 2s
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
├── 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.7(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 = "32.1.3-jre" 
junit-jupiter = "5.10.1" 

[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
    


約1ヶ月前に更新