ほぼ動的型付け言語しか使用しないチームに転職し、
┌( ^o^┌ )┐ <- これのごとく型付けェ型付けェと禁断症状に...
欲求不満に任せ、いつのまにか理想のGradleパッケージのジャーニーへと旅立っていました。
せっかくなので情報整理がてらやりたいこと・過程を紹介します。
あと、Githubにpublicのrepositoryを作っているので、
それをご覧いただくもよし、そのまま流用するもよし(そんな価値があればよいですが...)。
Github Link: gradle-docker
※本記事はJava/Gradle/Dockerなど基礎知識はすでにある前提でお読みください。
やりたいこと
- Dockerにすんなり疎通できる
- テストのフローはきっちり(Junit5 - Jacocoでカバレッジ)(YET)
- Logも今風(slf4j*logback - Jsonized Log)(YET)
- 書き方も統制しよう(formatter, linter)(YET)
ここまでやれば、まぁ禁断症状は治まるかと...
あと、これをベースにAWSのコンソール操作を自動化するツールも作るつもりなので...
プロローグ
生まれたての小鹿パッケージ、作るだけ、作りますか。
gradle initの時の選択肢は、まぁオーソドックスですね。
javaですし、DSLはgroovyですし、テストはJUnitですし🍣。
$ cd '任意のディレクトリ'
$ mkdir 'project name'
$ cd 'project name'
$ gradle init --type java-application
$ gradle wrapper
これで、よくある、ローカルにjavaさえ入っていれば
- maven,gradleなくともできますよ、
- gradleは固定ですよ
の環境が出来上がりですね。
あとは最低限のプロジェクト・パッケージ情報をシコシコ仕込みますか。
plugins {
id 'java'
id 'application'
id 'idea'
id 'eclipse'
}
repositories {
mavenCentral()
}
// パッケージのバージョン指定
project.version = '0.1.1'
// javaランタイムは11(15はそのうち...)
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
dependencies {
testImplementation 'junit:junit:4.13'
}
// Runするとき、Appのmain関数を起点に指定
application {
mainClassName = 'info.akotadakura.App'
}
// UTF-8強要します。
tasks.withType(JavaCompile).all {
options.encoding = "UTF-8"
}
// java -jarするとき、Appのmain関数を起点に指定
// あとjarファイル名にバージョンつくの嫌だ!
jar {
archiveFileName = "${project.name}.jar"
manifest {
attributes 'Main-Class' : 'info.akotadakura.App'
}
}
実に初々しい...
と、ここにいろいろ付け加えていくことになります。
まずはコンテナ対応、Docker Nativeな時代ですからね。
P.S.
初投稿なので、まさかりはお手柔らかに.....