Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gradleとちょっと仲良くなろう

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 Gradleとちょっと仲良くなろう

Avatar for Kazuhiro Seo

Kazuhiro Seo

December 29, 2024
Tweet

More Decks by Kazuhiro Seo

Other Decks in Programming

Transcript

  1. build.gradle ビルド設定を記述 plugins { application } repositories { mavenCentral() }

    dependencies { testImplementation(libs.junit.jupiter) testRuntimeOnly("org.junit.platform:junit-platform-launc implementation(libs.guava) }
  2. Gradle Wrapper Gradle のバージョンを固定してチームで共有するためのツール プロジェクトに同梱して使う プロジェクトのビルドに必要なGradle を自動でダウンロードしてくれる 何が嬉しいのか ユーザーごとにGradle をインストールする必要がない

    CI/CD 環境での利用が容易 . ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar # Wrapper 本体 │ └── gradle-wrapper.properties # バージョンなどを指定 ├── gradlew # Unix 用 Wrapper 起動スクリプト └── gradlew.bat # Windows 用 Wrapper 起動スクリプト
  3. toml でバージョンを管理 gradle.build libs.version.toml [versions] mysql-connector = "8.4.0" flyway-version =

    "11.1.0" [libraries] mysql-connector = { module = "com.mysql:mysql-connector-j", version.ref = "mysql-connector" } flyway-mysql = { module = "org.flywaydb:flyway-mysql", version.ref = "flyway-version" } flyway-core = { module = "org.flywaydb:flyway-core", version.ref = "flyway-version" } dependencies { implementation(libs.mysql.connector) implementation(libs.flyway.core) }
  4. カスタムタスクの定義 独自のタスクを作成できる tasks.register("generateRandomStrings") { description = " ダミーユーザー用パスワードを生成" val chars

    = ('a'..'z') + ('A'..'Z') + ('0'..'9') val randomPasswd = (1..32).map { chars.random() }.joinToString("") println("Password: $randomPasswd") }
  5. 既存タスクの複製・カスタマイズ 既存のタスクから新しいタスクを登録できる import org.springframework.boot.gradle.tasks.run.BootRun tasks.register<BootRun>("bootRun For E2E") { group =

    "application" description = "E2E テスト用のプロファイルを利用して起動" val bootRunTask = tasks.named<BootRun>("bootRun").get() mainClass.set(bootRunTask.mainClass) classpath = bootRunTask.classpath systemProperty("spring.config.location", "classpath:/application-test.yaml") }