LoginSignup
0
0

More than 3 years have passed since last update.

Gradleジャーニー:快適なパッケージを求めて

Last updated at Posted at 2020-10-24

ほぼ動的型付け言語しか使用しないチームに転職し、
┌( ^o^┌ )┐ <- これのごとく型付けェ型付けェと禁断症状に...
欲求不満に任せ、いつのまにか理想のGradleパッケージのジャーニーへと旅立っていました。
せっかくなので情報整理がてらやりたいこと・過程を紹介します。
あと、Githubにpublicのrepositoryを作っているので、
それをご覧いただくもよし、そのまま流用するもよし(そんな価値があればよいですが...)。
Github Link: gradle-docker
※本記事はJava/Gradle/Dockerなど基礎知識はすでにある前提でお読みください。

やりたいこと

  1. Dockerにすんなり疎通できる
  2. テストのフローはきっちり(Junit5 - Jacocoでカバレッジ)(YET)
  3. Logも今風(slf4j*logback - Jsonized Log)(YET)
  4. 書き方も統制しよう(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は固定ですよ
の環境が出来上がりですね。
あとは最低限のプロジェクト・パッケージ情報をシコシコ仕込みますか。

gradle.build
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.
初投稿なので、まさかりはお手柔らかに.....

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0