どのようにKotlinはあなたのGradleを編集することができます
こんにちは、友人!私はこの記事を書いたGradle そして、1つのJetbrains IDE(またはAndroid Studio)と完全に満足していない.
私はあなたのビットを追加する方法の味を与えたいと思いますKotlin あなたのGradle造りには、それはよりイライラさせます.
私がそれをしている間、新しいプロジェクトで依存関係管理を処理するより良い方法を紹介します.
Gradleの更新版
A confession How to migrate Dependencies management Laziness as a great virtue of the programmer Links
私を知っている人々は、私がGradleについて書いて、賞賛しようとしていることに驚くかもしれません.私は、私がGradleで持っていた愛憎悪関係をしばしば表明しました.
Gradle Performanceの話題には多くの注意が払われた
Androidのビルドツールのうち).仕事もたくさん行われている.参照https://guides.gradle.org/performance/ and https://developer.android.com/studio/build/optimize-your-build .
しかし、私は問題の後半にここに集中したいです.
Gradleの明るい面は、それが非常に宣言的で読みやすいビルドファイルで、テーブルに多くの力と柔軟性をもたらすということです.
そして、それはGradleの暗い側でした.一方
何が起こったのかは、Groovyのダイナミックな性質が、Gradleで行われたすべてのメタプログラミングとひどく結合して、私たちに悪いツーリングサポートを与えることでした.
ので、それはの背景ですGradle's kotlin-dsl project で
GradleとJetbrainsは静かに働いています.それは成熟に達することであるので、現在、話題に注意を払う良い時間です.
Migrating build logic from Groovy to Kotlin つの可能な戦略 構造体を保持しながら、ビルドの既存の構文を少しずつKotlinに移行する — 機械的移動と呼ぶもの Gradleのベストプラクティスに向けたビルドロジックの再構築とその努力の一環としてのKotlin DSLへの切り替え 我々の既存のプロジェクトのために、後者は通常より多くの感覚を作ります.
このベビーステップを取ってC +をやっていたCプログラマが多いという話があります.
Gradleは依存性を非常に簡潔に宣言することができます
マジック文字列の編集はエラーがちです. どのように、私は多モジュールプロジェクトで依存関係を集中させますか? どのようなkranglですか? OKIOとRXJavaの新しいバージョンが利用可能ですか? Groovyでは、我々は集中化問題を修正することができますdependencies.gradle pattern .
Kotlinと同じことをすることはとても簡単です.
私はいくつかのプロジェクトのためにそれをしました、そして、私は最初に幸福でした.私の3番目のプロジェクトでは、すべての文字列を抽出することは退屈であることが明らかになった.
また、問題は解決しなかった.
それが可能であるように、私の新しいGradleプラグインを提示させてください!
プラグインを含める
これ以上のマジック文字列 我々は、すべての中でそれらを使用することができます 発見するKrangl 我々は、クイックドキュメントを押すと、ウェブサイトへのリンクをクリックします. どの新しいバージョンが利用可能かを知るには、IDEから 試してみる
私はあなたのビットを追加する方法の味を与えたいと思いますKotlin あなたのGradle造りには、それはよりイライラさせます.
私がそれをしている間、新しいプロジェクトで依存関係管理を処理するより良い方法を紹介します.
JMFayard / 更新版
人生は、依存性とバージョンのためにGoogleにあまりに短いです
Gradleの更新版
人生は、依存性とバージョンのためにGoogleにあまりに短いです.
ドキュメントはJmfayardです。ギタブ.IOバージョン
View on GitHub
告白
私を知っている人々は、私がGradleについて書いて、賞賛しようとしていることに驚くかもしれません.私は、私がGradleで持っていた愛憎悪関係をしばしば表明しました.
Gradle Performanceの話題には多くの注意が払われた
Androidのビルドツールのうち).仕事もたくさん行われている.参照https://guides.gradle.org/performance/ and https://developer.android.com/studio/build/optimize-your-build .
しかし、私は問題の後半にここに集中したいです.
Maintenance of those build.gradle files can become quickly super tedious…
Gradleの明るい面は、それが非常に宣言的で読みやすいビルドファイルで、テーブルに多くの力と柔軟性をもたらすということです.
But with great power comes the need for great tooling… or a very frustrating user experience.
そして、それはGradleの暗い側でした.一方
build.gradle
ファイルは読みやすいです、彼らは書くのが全く難しいです.あなたがそれらをカスタマイズする必要があるとき、あなたはほとんど自分のものです.通常、それはしばらく働きません、そして、あなたは理由を知りません.その後、いくつかの点では、貼り付け正しいペーストをコピーし、それが動作しますが、あなたは本当に理由を知っていない.何が起こったのかは、Groovyのダイナミックな性質が、Gradleで行われたすべてのメタプログラミングとひどく結合して、私たちに悪いツーリングサポートを与えることでした.
ので、それはの背景ですGradle's kotlin-dsl project で
GradleとJetbrainsは静かに働いています.それは成熟に達することであるので、現在、話題に注意を払う良い時間です.
移行方法
Migrating build logic from Groovy to Kotlin つの可能な戦略
このベビーステップを取ってC +をやっていたCプログラマが多いという話があります.
// before.c
int main() {
/* I was doing C programming */
printf("Hello, World!");
return 0;
}
// after.cpp
int main() {
// Now I'm now doing c++
printf("Hello, World!");
return 0;
}
この精神において、私はGradle & Kotlinと一緒に取ることができる実用的な最初のステップに焦点を当てるつもりです.依存性管理
Gradleは依存性を非常に簡潔に宣言することができます
dependencies {
implementation("com.squareup.okio:okio:2.0.0")
implementation("io.reactivex.rxjava2:rxjava:2.2.0")
implementation("de.mpicbg.scicomp:krangl:0.10.3")
}
このコードにはいくつか問題があります.Kotlinと同じことをすることはとても簡単です.
// buildSrc/build.gradle.kts
plugins {
`kotlin-dsl`
}
// buildSrc/src/main/kotlin/Libs.kt
object Libs {
val okio = "com.squareup.okio:okio:2.0.0"
}
// some-module/build.gradle or
// some-module/build.gradle.kts
dependencies {
implementation(Libs.okio)
}
からのコードbuildSrc folder が自動的にすべてのあなたのbuild.gradle
or build.gradle.kts
ファイル.プログラマの偉大な美徳としての怠惰
私はいくつかのプロジェクトのためにそれをしました、そして、私は最初に幸福でした.私の3番目のプロジェクトでは、すべての文字列を抽出することは退屈であることが明らかになった.
また、問題は解決しなかった.
What is Krangl?
と4 )What new versions are available?
ベンマネスから非常に良いプラグインがあります. gradle-versions-plugin
, それはかつてあなたのGradleプロジェクトの答えに適用されます.怠惰なプログラマとして、私は疑問に思いました:私はそれが必要なKotlinコードを正確に生成するために拡張することができますか?それが可能であるように、私の新しいGradleプラグインを提示させてください!
プラグインを含める
あなたのトップでbuild.gradle
ファイルを追加します
plugins {
id("de.fayard.buildSrcVersions") version "$VERSION"
}
見つけるでしょう$VERSION
アットhttps://plugins.gradle.org/plugin/de.fayard.buildSrcVersions .
この新しい宣言プラグインブロックは、buildscript {...}
より悪いkotlin DSLユーザ経験を提供する構文.
//Gradlewビルドバージョン
これは、最初に実行するコマンドであり、新しい依存関係を追加するたびに、またはどのバージョンが使用可能かを確認したい.
最初にタスクを実行する:dependencyUpdates
それはインターネットに接続し、しばらくかかるかもしれません.このタスクはJSON report すべての依存関係に関するメタデータを使用します.Kotlinpoet 次のコードに変換するのに役立ちます.
// Folder buildSrc/src/main/kotlin
object Libs {
/** [krangl website](https://github.com/holgerbrandl/krangl) */
const val krangl: String = "de.mpicbg.scicomp:krangl:" + Versions.krangl
/** [okio website](https://github.com/square/okio/) */
const val okio: String = "com.squareup.okio:okio:" + Versions.okio
/** [rxjava website](https://github.com/ReactiveX/RxJava) */
const val rxjava: String = "io.reactivex.rxjava2:rxjava:" + Versions.rxjava
}
object Versions {
const val krangl: String = "0.10.3" // up-to-date
const val okio: String = "2.0.0" // available: milestone=2.1.0
const val rxjava: String = "2.2.0" // available: milestone=2.2.2
}
IDE統合
この生成されたコードはGradle ' sによって提供されるより良いIDE統合を経験する必要があるすべてですkotlin-dsl
インIntelliJ IDEA
or Android Studio ≥ 3.2
.
https://www.useloom.com/share/7edceb83fd594f319356240fcce304d5
我々は今解決しようとする問題を解決した
plugins {
id("de.fayard.buildSrcVersions") version "$VERSION"
}
これは、最初に実行するコマンドであり、新しい依存関係を追加するたびに、またはどのバージョンが使用可能かを確認したい.
最初にタスクを実行する
:dependencyUpdates
それはインターネットに接続し、しばらくかかるかもしれません.このタスクはJSON report すべての依存関係に関するメタデータを使用します.Kotlinpoet 次のコードに変換するのに役立ちます.// Folder buildSrc/src/main/kotlin
object Libs {
/** [krangl website](https://github.com/holgerbrandl/krangl) */
const val krangl: String = "de.mpicbg.scicomp:krangl:" + Versions.krangl
/** [okio website](https://github.com/square/okio/) */
const val okio: String = "com.squareup.okio:okio:" + Versions.okio
/** [rxjava website](https://github.com/ReactiveX/RxJava) */
const val rxjava: String = "io.reactivex.rxjava2:rxjava:" + Versions.rxjava
}
object Versions {
const val krangl: String = "0.10.3" // up-to-date
const val okio: String = "2.0.0" // available: milestone=2.1.0
const val rxjava: String = "2.2.0" // available: milestone=2.2.2
}
IDE統合
この生成されたコードはGradle ' sによって提供されるより良いIDE統合を経験する必要があるすべてですkotlin-dsl
インIntelliJ IDEA
or Android Studio ≥ 3.2
.
https://www.useloom.com/share/7edceb83fd594f319356240fcce304d5
我々は今解決しようとする問題を解決した
Libs.<TAB>
そして、自動補完は残りを行います.build.gradle
and build.gradle.kts
ファイル.Libs.okio
そこからVersions.okio
. 2.0.0は現在使用され、有用なコメントは2.1.0が利用可能であることを私たちに伝えます.(プラグインは自動的に依存関係の更新を適用しません.試してみる
グルービーbuild.gradle
と小林build.gradle.kts
ファイルは、ほぼ一度書かれたように見えます.何が違うのかは、その経験を書くことですので、IntellijのアイデアやAndroidスタジオを起動することをお勧めします.
私はGradleの黒魔術面を嫌っていることを告白し始めました.Kotlinでブラックボックスを開くことは、非常に役に立ちました.私はGradleは単に、有用な、よく文書化されたAPIであることに気づいた.APIは、他のJava APIのようなあなたの開発ツールやスキルを使用して動作することができます.善良さが我々から隠されていたAPI.十分な関心があれば、以下の記事にもっと深く行くつもりです.
リンク
マイプラグイン
JMFayard
/
更新版
人生は、依存性とバージョンのためにGoogleにあまりに短いです
Gradleの更新版
人生は、依存性とバージョンのためにGoogleにあまりに短いです.
ドキュメントはJmfayardです。ギタブ.IOバージョン
View on GitHub
Gradle/kotlin DSLサンプル
グラグラ
/
DSLサンプル
サンプルはGradle Kotlin DSLを使ってビルドします
DSLサンプル
ようこそ!Gradle - Kotlin DSLは書き込みをサポートしますGradle を使用してビルドスクリプトKotlin ランゲージ.これは、最適なIDEとツールの経験を組み合わせてビルドロジックを開発するための豊富な、柔軟かつ静的型付けアプローチでGradleユーザーを提供することを目指しています.
始める
最速の方法を取得し、コールトベースのGradleビルドで実行するにはgradle init gradle init --dsl kotlin
または、Gradleが既にインストールされていない場合、Gradleをオンラインで作成することができますhttps://gradle-initializr.cleverapps.io/ .
Gradle - Kotlin DSLは、dedicated chapter Gradleユーザーマニュアルで.
また、等級user manual and guides groovy dslとkotlin dslの両方を示すスクリプトスクリプトの抜粋を含みます.これは、Gradle - Kotlin DSLでこれを行う方法を見つけるのに最適な場所ですそして、それはすべてからGradle機能をカバーします.
View on GitHub
Reference
この問題について(どのようにKotlinはあなたのGradleを編集することができます), 我々は、より多くの情報をここで見つけました
https://dev.to/jmfayard/how-kotlin-makes-editing-your-gradle-build-less-frustrating-232l
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
人生は、依存性とバージョンのためにGoogleにあまりに短いです.
ドキュメントはJmfayardです。ギタブ.IOバージョン
View on GitHub
Gradle/kotlin DSLサンプル
グラグラ / DSLサンプル
サンプルはGradle Kotlin DSLを使ってビルドします
DSLサンプル
ようこそ!Gradle - Kotlin DSLは書き込みをサポートしますGradle を使用してビルドスクリプトKotlin ランゲージ.これは、最適なIDEとツールの経験を組み合わせてビルドロジックを開発するための豊富な、柔軟かつ静的型付けアプローチでGradleユーザーを提供することを目指しています.
始める
最速の方法を取得し、コールトベースのGradleビルドで実行するにはgradle init gradle init --dsl kotlin
または、Gradleが既にインストールされていない場合、Gradleをオンラインで作成することができますhttps://gradle-initializr.cleverapps.io/ .
Gradle - Kotlin DSLは、dedicated chapter Gradleユーザーマニュアルで.
また、等級user manual and guides groovy dslとkotlin dslの両方を示すスクリプトスクリプトの抜粋を含みます.これは、Gradle - Kotlin DSLでこれを行う方法を見つけるのに最適な場所ですそして、それはすべてからGradle機能をカバーします.
View on GitHub
Reference
この問題について(どのようにKotlinはあなたのGradleを編集することができます), 我々は、より多くの情報をここで見つけました
https://dev.to/jmfayard/how-kotlin-makes-editing-your-gradle-build-less-frustrating-232l
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
gradle init --dsl kotlin
Reference
この問題について(どのようにKotlinはあなたのGradleを編集することができます), 我々は、より多くの情報をここで見つけました https://dev.to/jmfayard/how-kotlin-makes-editing-your-gradle-build-less-frustrating-232lテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol