kotlin2.0に向けて(groovyからktsへ)(2,3,4日目)

2025年1月23日木曜日

t f B! P L
まずは、groovyからktsへだけど、上から変えると全部更新になるんで、まずしたからやって見るとして。
refactorでファイル名を置き換えて。。。だめだsafeサーチは外さないと、上がだめだって怒られた。
どうやらktsからgroovyを呼び出せるみたいだから、上から変えて行くことができそうなので、トップレベルのbuild.gradleをbuild.gradle.ktsにリファクタして。。。OK
そのままbuildしたけどやっぱだめだよね。で、面倒なので、geminiさんにgroovyからktsに置き換えてをお願い。変数周りが上手くいかず。chatgpt同じくだめ。
仕方ない。geminiから手作業で変えるか。。。
とか考えてたら、そもそもgradleってどの順番から読み込まれんのが気になったので調べてみると以下の順番らしい。もう少し前に.propertiesもあるらしいけど、その後からとしてだね

MyProject/
├── settings.gradle.kts①
├── build.gradle.kts②
└── app/
└── build.gradle.kts③

ただ、ktsファイルで、gvoovyみたいにグローバル変数を使う場合は、gradle.propertiesにkey=valueでいれるか、buildSrcのフォルダを作るかのどっちかで対応できるみたい。
そう考えるとdefでグローバル変数にできてgroovyも悪くなかったかも
で、簡単なやり方は、rootディレクトリにbuildSrcを作成して、その下にbuild.gradle.ktsを殻で作成で、syncを実施すると、色々ファイルが作成される
グローバル変数を使う方法は、ここにktファイルを作成して、object classを作成すればOK
その後に、殻になっていたbuild.gradle.ktsに追記して終了

MyProject/
├── buildSrc ①フォルダ作成
         ├── build.gradle.kts ②空ファイルを作成 ⑤
         └── build ③syncを実施するとかってにできる
         └── .gradle ③syncを実施するとかってにできる
         └── src / main/ java ④グローバル変数を作成したいファイルのフォルダを作成
                                      ├── Versions.kt
Versions.ktの中身
object Versions {
const val androidPlugin = "8.8.0"
const val kotlin = "1.9.22"
const val gradle = "0.51.0"
const val navivation = "2.7.7"
}
build.gradle.ktsの中身
// buildSrc/build.gradle.kts
plugins {
`kotlin-dsl` // Kotlin DSL を使用する場合
}

repositories {
mavenCentral()
}
あとは、MyPoject配下のgradle.ktsファイルに
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}")
みたいに書いていけばOK
簡単な感じで書いたけど、何故かsyncがいかないとか、PC再起動したらとか正直なぜうまく行ったか不明な感じでした。

QooQ