Gradle のバックアップ(No.7)
- keywords: [Gradle] description: 汎用ビルドツールであるGradleの使い方についてメモしています。 author: aterai pubdate: 2016-12-13T13:37:28+09:00
概要
インストール
Windows
+Cygwin
の環境でSDKMAN
からGradle
をインストールCygwin
setup-x86_64.exe
などから、curl
、unzip
、zip
をインストール
SDKMAN
:Cygwin terminal
などから、以下を実行してインストールし、ターミナルを再起動curl -s "https://get.sdkman.io" | bash
Gradle
:sdk install gradle
サンプル
aterai/java-swing-tipsのような、大量(AccordionPanel
~ZoomingAndPanning
で700
ほど)のサブプロジェクトが存在する場合のサンプルです。
build.gradle
description 'Java Swing Tips'
//allprojects と subprojects の使い分け方が良く分かっていない...
allprojects {
apply {
plugin 'java'
plugin 'application'
}
def defaultEncoding = 'UTF-8'
[compileJava, compileTestJava]*.options*.encoding = defaultEncoding
repositories {
jcenter()
}
}
subprojects {
sourceSets {
main {
//デフォルトプロジェクトレイアウトでは src/main/java
java { srcDir 'src/java' }
//デフォルトプロジェクトレイアウトは src/main/resources
resources { srcDir 'src/java' }
}
}
def config = new ConfigSlurper().parse(new File("${project.projectDir}/config.gradle").toURL())
mainClassName = config.main.class
// In this section you declare where to find the dependencies of your project
repositories {
flatDir { dirs "${project.projectDir}/lib" }
}
// In this section you declare the dependencies for your production and test code
dependencies {
compile fileTree(dir: "${project.projectDir}/lib", include: '*.jar')
}
version = config.version
jar {
manifest {
attributes 'Implementation-Version': config.version,
'Implementation-Vendor': config.vendor,
'Main-Class': config.main.class,
'Class-Path': config.runtime.classpath
}
}
apply {
plugin 'pmd'
plugin 'checkstyle'
plugin 'findbugs'
}
pmd {
ignoreFailures = true
consoleOutput = true
ruleSetFiles = files("${rootProject.projectDir}/ruleset.xml")
ruleSets = []
}
checkstyleMain {
ignoreFailures = true
configFile = file("${rootProject.projectDir}/checkstyle.xml")
}
findbugs {
ignoreFailures = true
excludeFilter = file("${rootProject.projectDir}/excludefilter.xml")
}
}
settings.gradle
//サブプロジェクトとしてAccordionPanel~ZoomingAndPanningを追加
//700ほど追加すると重い...
file('.').eachDirMatch(~/[a-zA-Z]+/) {
include it.name
}
AccordionPanel
~ZoomingAndPanning
以下にconfig.gradle
vendor = 'Java Swing Tips - https://ateraimemo.com/'
version = '1.0.0'
year = '2003-2016'
main.class = 'example.MainPanel'
runtime.classpath = '.'
実行方法
- すべてのサブプロジェクトを実行
$ gradle clean :clean UP-TO-DATE :AccordionPanel:clean :ActionMap:clean ... 中略 ... :ZoomAndPanPanel:clean UP-TO-DATE :ZoomingAndPanning:clean UP-TO-DATE BUILD SUCCESSFUL Total time: 8.747 secs
Ant
で同様にclean
タスクを実行すると5
秒程度
$ ant -f all.xml -Dall=clean Buildfile: C:\tmp\jst\all.xml all: clean: clean: [delete] Deleting directory C:\tmp\jst\AccordionPanel\target ... 中略 ... clean: [delete] Deleting directory C:\tmp\jst\ZoomingAndPanning\target BUILD SUCCESSFUL Total time: 5 seconds
- サブプロジェクトを指定して実行
$ gradle :ZoomingAndPanning:check :ZoomingAndPanning:compileJava UP-TO-DATE :ZoomingAndPanning:processResources UP-TO-DATE :ZoomingAndPanning:classes UP-TO-DATE :ZoomingAndPanning:checkstyleMain :ZoomingAndPanning:compileTestJava UP-TO-DATE :ZoomingAndPanning:processTestResources UP-TO-DATE :ZoomingAndPanning:testClasses UP-TO-DATE :ZoomingAndPanning:checkstyleTest UP-TO-DATE :ZoomingAndPanning:findbugsMain :ZoomingAndPanning:findbugsTest UP-TO-DATE :ZoomingAndPanning:pmdMain :ZoomingAndPanning:pmdTest UP-TO-DATE :ZoomingAndPanning:test UP-TO-DATE :ZoomingAndPanning:check BUILD SUCCESSFUL Total time: 17.056 secs
- サブプロジェクトディレクトリを指定して実行
$ gradle clean run -q --project-dir ZoomingAndPanning