ビルドツール: Maven と Gradle
I ビルドツール コンパイル、テスト、パッケージ化、展開を自動化します。
Maven と Gradle は Java エコシステムで最もよく使用されます。
何を学ぶか
- Maven: POM、ライフサイクル、依存関係
- Gradle: build.gradle、タスク
- 依存関係の管理
- プラグインと設定
メイビン
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
</plugins>
</build>
</project>
Maven のライフサイクル
| 段階 |
説明 |
| mvnクリーン |
ターゲットを削除/ |
| mvn コンパイル |
ソースをコンパイルする |
| mvn テスト |
テストを実行します |
| mvn パッケージ |
JAR/WARの作成 |
| mvn インストール |
ローカルリポジトリにインストールする |
| mvn デプロイ |
リモートリポジトリにデプロイする |
グラドル
plugins {
id 'java'
id 'application'
}
group = 'com.example'
version = '1.0.0'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'com.google.guava:guava:32.1.2-jre'
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
application {
mainClass = 'com.example.Main'
}
tasks.named('test') {
useJUnitPlatform()
}
plugins {
java
application
}
group = "com.example"
version = "1.0.0"
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("com.google.guava:guava:32.1.2-jre")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
}
tasks.test {
useJUnitPlatform()
}
application {
mainClass.set("com.example.Main")
}
Maven と Gradle の比較
いつ選択するか
| 待ってます |
メイビン |
グラドル |
| 構成 |
XML (冗長) |
Groovy/Kotlin (簡潔) |
| パフォーマンス |
良い |
改善 (増分) |
| 柔軟性 |
大会 |
非常に柔軟 |
| 学習曲線 |
簡単 |
平均 |
| IDEのサポート |
素晴らしい |
素晴らしい |
# Maven
mvn clean install # Build completa
mvn test # Solo test
mvn dependency:tree # Albero dipendenze
mvn package -DskipTests # Package senza test
# Gradle
gradle build # Build completa
gradle test # Solo test
gradle dependencies # Lista dipendenze
gradle build -x test # Build senza test
gradle tasks # Lista task disponibili