feat: refactor build and flesh out Gradle plugin

This commit is contained in:
Harsh Shandilya 2023-08-30 19:25:03 +05:30
parent 1663cc6b22
commit 084387dfda
No known key found for this signature in database
32 changed files with 346 additions and 110 deletions

3
.gitignore vendored
View File

@ -46,3 +46,6 @@ bin/
### Mac OS ###
.DS_Store
### Android Studio ###
local.properties

View File

@ -0,0 +1,13 @@
package $basePackage
internal object ArtifactInfo {
const val GROUP = "$publishGroup"
const val VERSION = "$publishVersion"
const val COMPILER_PLUGIN_ARTIFACT = "compiler-plugin"
const val GRADLE_PLUGIN_ARTIFACT = "gradle-plugin"
const val RUNTIME_ARTIFACT = "runtime"
const val DEFAULT_TRACELOG_ENABLED = true
const val DEFAULT_TRACELOG_ANNOTATION = "dev/msfjarvis/tracelog/runtime/annotations/DebugLog"
}

View File

@ -1,6 +1,18 @@
plugins { `kotlin-dsl` }
dependencies {
implementation(libs.android.gradle.plugin)
implementation(libs.kotlin.gradlePlugin)
dependencies { implementation(libs.kotlin.gradlePlugin.api) }
kotlin.jvmToolchain(11)
gradlePlugin {
plugins {
create("build") {
id = "dev.msfjarvis.tracelog.build"
implementationClass = "dev.msfjarvis.tracelog.build.TraceLogBuildPlugin"
}
create("settings") {
id = "dev.msfjarvis.tracelog.settings"
implementationClass = "dev.msfjarvis.tracelog.build.TraceLogSettingsPlugin"
}
}
}

View File

@ -39,6 +39,6 @@ dependencyResolutionManagement {
versionCatalogs { maybeCreate("libs").apply { from(files("../gradle/libs.versions.toml")) } }
}
rootProject.name = "buildSrc"
rootProject.name = "build-logic"
enableFeaturePreview("STABLE_CONFIGURATION_CACHE")

View File

@ -0,0 +1,22 @@
package dev.msfjarvis.tracelog.build
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.tasks.Copy
class ArtifactInfoCopyAction(
private val project: Project,
private val basePackage: String,
) : Action<Copy> {
override fun execute(t: Copy) {
t.expand(
mapOf(
"basePackage" to basePackage,
"publishGroup" to "${project.rootProject.findProperty("GROUP")}",
"publishVersion" to "${project.rootProject.findProperty("VERSION_NAME")}",
)
)
t.filteringCharset = "UTF-8"
}
}

View File

@ -0,0 +1,6 @@
package dev.msfjarvis.tracelog.build
interface TraceLogBuildExtension {
fun publishing()
fun generateArtifactInfo(basePackage: String)
}

View File

@ -0,0 +1,43 @@
package dev.msfjarvis.tracelog.build
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.plugins.AppliedPlugin
import org.gradle.api.tasks.Copy
import org.gradle.api.tasks.SourceSetContainer
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtensionConfig
class TraceLogBuildExtensionImpl(
private val project: Project,
) : TraceLogBuildExtension {
override fun publishing() {
project.pluginManager.apply("com.vanniktech.maven.publish")
project.pluginManager.apply("org.jetbrains.dokka")
project.pluginManager.apply("org.jetbrains.kotlinx.binary-compatibility-validator")
// Published modules should be explicit about their API visibility.
val kotlinPluginHandler = Action<AppliedPlugin> {
val kotlin = project.extensions.getByType(
KotlinTopLevelExtensionConfig::class.java
)
kotlin.explicitApi()
}
project.pluginManager.withPlugin("org.jetbrains.kotlin.jvm", kotlinPluginHandler)
project.pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform", kotlinPluginHandler)
}
override fun generateArtifactInfo(basePackage: String) {
val generateArtifactInfoProvider = project.tasks.register(
"generateArtifactInfo",
Copy::class.java,
ArtifactInfoCopyAction(project, basePackage),
)
generateArtifactInfoProvider.configure {
from(project.rootProject.layout.projectDirectory.dir("artifact-info-template"))
into(project.layout.buildDirectory.dir("generated/source/artifact-info-template/main"))
}
project.extensions.configure<SourceSetContainer>("sourceSets") {
getByName("main").java.srcDir(generateArtifactInfoProvider)
}
}
}

View File

@ -0,0 +1,24 @@
package dev.msfjarvis.tracelog.build
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
class TraceLogBuildPlugin : Plugin<Project> {
override fun apply(target: Project) {
target.extensions.add(
TraceLogBuildExtension::class.java,
"traceLogBuild",
TraceLogBuildExtensionImpl(target)
)
commonKotlinConfiguration(target)
}
private fun commonKotlinConfiguration(project: Project) {
project.tasks.withType<KotlinCompile<*>>().configureEach {
kotlinOptions.freeCompilerArgs += "-progressive"
}
}
}

View File

@ -0,0 +1,12 @@
package dev.msfjarvis.tracelog.build
import org.gradle.api.Plugin
import org.gradle.api.initialization.Settings
class TraceLogSettingsPlugin : Plugin<Settings> {
override fun apply(target: Settings) {
target.gradle.allprojects {
pluginManager.apply("dev.msfjarvis.tracelog.build")
}
}
}

View File

@ -1,5 +0,0 @@
plugins { `maven-publish` }
group = "dev.msfjarvis.tracelog"
version = "1.0.0-SNAPSHOT"

View File

@ -1,9 +0,0 @@
plugins {
id("org.jetbrains.kotlin.jvm")
id("tracelog-common")
}
kotlin {
jvmToolchain(11)
explicitApi()
}

View File

@ -1,28 +0,0 @@
plugins {
id("org.jetbrains.kotlin.multiplatform")
id("com.android.library")
id("tracelog-common")
}
kotlin {
jvmToolchain(11)
explicitApi()
jvm()
androidTarget()
iosX64()
iosArm64()
tvosX64()
tvosArm64()
watchosX64()
watchosArm32()
watchosArm64()
macosX64()
macosArm64()
iosSimulatorArm64()
watchosSimulatorArm64()
tvosSimulatorArm64()
mingwX64()
linuxX64()
androidNativeArm32()
androidNativeArm64()
}

View File

@ -1,13 +1,17 @@
plugins {
alias(libs.plugins.spotless)
id("tracelog-jvm-library") apply false
id("tracelog-kmp-library") apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.dokka) apply false
alias(libs.plugins.kotlinx.binaryCompatibilityValidator) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.mavenPublish) apply false
}
spotless {
kotlin {
target("**/*.kt")
targetExclude("**/build/")
targetExclude("**/build/", "**/artifact-info-template/*")
ktfmt().googleStyle()
}
kotlinGradle {

View File

@ -0,0 +1,24 @@
public final class dev/msfjarvis/tracelog/compiler/plugin/DebugLogTransformer : org/jetbrains/kotlin/backend/common/IrElementTransformerVoidWithContext {
public fun <init> (Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;)V
public fun visitFunctionNew (Lorg/jetbrains/kotlin/ir/declarations/IrFunction;)Lorg/jetbrains/kotlin/ir/IrStatement;
}
public final class dev/msfjarvis/tracelog/compiler/plugin/TracingCommandLineProcessor : org/jetbrains/kotlin/compiler/plugin/CommandLineProcessor {
public fun <init> ()V
public fun getPluginId ()Ljava/lang/String;
public fun getPluginOptions ()Ljava/util/Collection;
public fun processOption (Lorg/jetbrains/kotlin/compiler/plugin/AbstractCliOption;Ljava/lang/String;Lorg/jetbrains/kotlin/config/CompilerConfiguration;)V
}
public final class dev/msfjarvis/tracelog/compiler/plugin/TracingCompilerPluginRegistrar : org/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar {
public fun <init> ()V
public fun getSupportsK2 ()Z
public fun registerExtensions (Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Lorg/jetbrains/kotlin/config/CompilerConfiguration;)V
}
public final class dev/msfjarvis/tracelog/compiler/plugin/TracingIrGenerationExtension : org/jetbrains/kotlin/backend/common/extensions/IrGenerationExtension {
public fun <init> (Lorg/jetbrains/kotlin/cli/common/messages/MessageCollector;Ljava/lang/String;Ljava/lang/String;)V
public fun generate (Lorg/jetbrains/kotlin/ir/declarations/IrModuleFragment;Lorg/jetbrains/kotlin/backend/common/extensions/IrPluginContext;)V
public fun resolveSymbol (Lorg/jetbrains/kotlin/ir/symbols/IrSymbol;Lorg/jetbrains/kotlin/ir/builders/TranslationPluginContext;)Lorg/jetbrains/kotlin/ir/declarations/IrDeclaration;
}

View File

@ -1,17 +1,15 @@
import org.gradle.api.tasks.testing.logging.TestLogEvent
plugins {
id("tracelog-jvm-library")
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.ksp)
alias(libs.plugins.buildconfig)
}
buildConfig {
packageName("${group}.compiler.plugin")
useKotlinOutput { internalVisibility = true }
buildConfigField("String", "KOTLIN_PLUGIN_GROUP", "\"${project.group}\"")
buildConfigField("String", "KOTLIN_PLUGIN_NAME", "\"${project.name}\"")
buildConfigField("String", "KOTLIN_PLUGIN_VERSION", "\"${project.version}\"")
kotlin.jvmToolchain(11)
traceLogBuild {
publishing()
generateArtifactInfo("dev.msfjarvis.tracelog")
}
tasks.test.configure {
@ -20,7 +18,6 @@ tasks.test.configure {
}
dependencies {
implementation(platform(embeddedKotlin("bom")))
compileOnly(libs.kotlin.compiler)
ksp(libs.auto.ksp)
compileOnly(libs.auto.annotations)

View File

@ -0,0 +1 @@
POM_ARTIFACT_ID=compiler-plugin

View File

@ -1,6 +1,7 @@
package dev.msfjarvis.tracelog.compiler.plugin
import com.google.auto.service.AutoService
import dev.msfjarvis.tracelog.ArtifactInfo
import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption
import org.jetbrains.kotlin.compiler.plugin.CliOption
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
@ -25,7 +26,7 @@ public class TracingCommandLineProcessor : CommandLineProcessor {
val OPTION_ANNOTATION_NAME =
CliOption(
optionName = "debugAnnotation",
valueDescription = "${BuildConfig.KOTLIN_PLUGIN_GROUP}.runtime.annotations.DebugLog",
valueDescription = ArtifactInfo.DEFAULT_TRACELOG_ANNOTATION,
description = ANNOTATION_NAME.toString(),
required = true,
allowMultipleOccurrences = false,

View File

@ -0,0 +1 @@
../artifact-info-template

View File

@ -1,25 +1,43 @@
@file:Suppress("UnstableApiUsage")
import java.util.Properties
plugins {
id("tracelog-jvm-library")
alias(libs.plugins.kotlin.jvm)
`java-gradle-plugin`
alias(libs.plugins.buildconfig)
alias(libs.plugins.ksp)
alias(libs.plugins.mavenPublish).apply(false)
alias(libs.plugins.dokka).apply(false)
alias(libs.plugins.kotlinx.binaryCompatibilityValidator).apply(false)
}
buildConfig {
packageName("${group}.gradle.plugin")
useKotlinOutput { internalVisibility = true }
buildConfigField("String", "KOTLIN_PLUGIN_GROUP", "\"${project.group}\"")
buildConfigField("String", "KOTLIN_PLUGIN_NAME", "\"${project.name}\"")
buildConfigField("String", "KOTLIN_PLUGIN_VERSION", "\"${project.version}\"")
kotlin.jvmToolchain(11)
fun loadParentProperties() {
val properties = Properties()
file("../gradle.properties").inputStream().use { properties.load(it) }
properties.forEach { (k, v) ->
val key = k.toString()
val value = providers.gradleProperty(name).getOrElse(v.toString())
extra.set(key, value)
}
}
loadParentProperties()
traceLogBuild {
publishing()
generateArtifactInfo("dev.msfjarvis.tracelog")
}
gradlePlugin.plugins.register("dev.msfjarvis.tracelog") {
id = group.toString()
implementationClass = "$group.gradle.plugin.TraceLogGradlePlugin"
id = properties["GROUP"].toString()
implementationClass = "${properties["GROUP"]}.gradle.plugin.TraceLogGradlePlugin"
}
dependencies {
implementation(platform(embeddedKotlin("bom")))
compileOnly(gradleKotlinDsl())
compileOnly(libs.auto.annotations)
compileOnly(libs.kotlin.gradlePlugin.api)
compileOnly(libs.kotlin.stdlib)

View File

@ -1 +1,2 @@
POM_ARTIFACT_ID=gradle-plugin
kotlin.stdlib.default.dependency=false

View File

@ -48,6 +48,8 @@ dependencyResolutionManagement {
versionCatalogs { create("libs") { from(files("../gradle/libs.versions.toml")) } }
}
plugins { id("dev.msfjarvis.tracelog.settings") }
rootProject.name = "TraceLog-Gradle-Plugin"
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")

View File

@ -0,0 +1,10 @@
package dev.msfjarvis.tracelog.gradle.plugin
import org.gradle.api.provider.Property
public abstract class TraceLogExtension {
public abstract val annotationClass: Property<String>
public abstract val loggerFunction: Property<String>
}

View File

@ -1,31 +1,75 @@
package dev.msfjarvis.tracelog.gradle.plugin
import com.google.auto.service.AutoService
import dev.msfjarvis.tracelog.ArtifactInfo
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME
import org.gradle.api.provider.Provider
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.getByType
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilerPluginSupportPlugin
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet.Companion.COMMON_MAIN_SOURCE_SET_NAME
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetContainer
import org.jetbrains.kotlin.gradle.plugin.SubpluginArtifact
import org.jetbrains.kotlin.gradle.plugin.SubpluginOption
@AutoService(Plugin::class)
public class TraceLogGradlePlugin : KotlinCompilerPluginSupportPlugin {
override fun applyToCompilation(
kotlinCompilation: KotlinCompilation<*>
): Provider<List<SubpluginOption>> {
return kotlinCompilation.target.project.provider {
buildList { add(SubpluginOption(key = "loggerFunction", value = "kotlin.io.println")) }
override fun apply(target: Project) {
val extension = target.extensions.create<TraceLogExtension>("traceLog")
extension.loggerFunction.convention("kotlin.io.println")
extension.annotationClass.convention(ArtifactInfo.DEFAULT_TRACELOG_ANNOTATION)
target.afterEvaluate {
val useLocal =
it.rootProject.findProperty("tracelog.internal.project-dependency").toString().toBoolean()
val annotationDependency =
when (extension.annotationClass.get()) {
ArtifactInfo.DEFAULT_TRACELOG_ANNOTATION ->
if (useLocal) {
it.project(":runtime")
} else {
"dev.msfjarvis.tracelog:runtime:1.0.0-SNAPSHOT"
}
else -> null
}
if (annotationDependency != null) {
if (target.plugins.hasPlugin("org.jetbrains.kotlin.multiplatform")) {
val kotlin = target.extensions.getByName("kotlin") as KotlinSourceSetContainer
kotlin.sourceSets.getByName(COMMON_MAIN_SOURCE_SET_NAME) { sourceSet ->
sourceSet.dependencies { implementation(annotationDependency) }
}
} else {
target.dependencies.add(IMPLEMENTATION_CONFIGURATION_NAME, annotationDependency)
}
}
}
}
override fun getCompilerPluginId(): String = BuildConfig.KOTLIN_PLUGIN_GROUP
override fun applyToCompilation(
kotlinCompilation: KotlinCompilation<*>
): Provider<List<SubpluginOption>> {
val project = kotlinCompilation.target.project
val extension = project.extensions.getByType<TraceLogExtension>()
return kotlinCompilation.target.project.provider {
buildList {
add(SubpluginOption(key = "loggerFunction", value = extension.loggerFunction.get()))
add(SubpluginOption(key = "debugAnnotation", value = extension.annotationClass.get()))
}
}
}
override fun getCompilerPluginId(): String = ArtifactInfo.GROUP
override fun getPluginArtifact(): SubpluginArtifact =
SubpluginArtifact(
groupId = BuildConfig.KOTLIN_PLUGIN_GROUP,
artifactId = BuildConfig.KOTLIN_PLUGIN_NAME,
version = BuildConfig.KOTLIN_PLUGIN_VERSION,
groupId = ArtifactInfo.GROUP,
artifactId = ArtifactInfo.COMPILER_PLUGIN_ARTIFACT,
version = ArtifactInfo.VERSION,
)
override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean = true

View File

@ -19,3 +19,4 @@ POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=msfjarvis
POM_DEVELOPER_NAME=Harsh Shandilya
POM_DEVELOPER_URL=https://msfjarvis.dev
tracelog.internal.project-dependency=true

View File

@ -1,9 +1,17 @@
[versions]
kotlin = "1.9.0"
junit = "5.10.0"
[plugins]
android-library = { id = "com.android.library", version = "8.1.1" }
buildconfig = "com.github.gmazzo.buildconfig:4.1.2"
dokka = { id = "org.jetbrains.dokka", version = "1.8.20" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
kotlinx-binaryCompatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version = "0.13.2" }
ksp = "com.google.devtools.ksp:1.9.0-1.0.13"
mavenPublish = { id = "com.vanniktech.maven.publish", version = "0.25.3" }
spotless = "com.diffplug.spotless:6.21.0"
[libraries]
@ -14,9 +22,9 @@ junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.re
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" }
junit-legacy = "junit:junit:4.13.2"
kct = "dev.zacsweers.kctfork:core:0.3.2"
kotlin-compiler = { module = "org.jetbrains.kotlin:kotlin-compiler-embeddable" }
kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin" }
kotlin-gradlePlugin-api = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin-api" }
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib" }
kotlin-compiler = { module = "org.jetbrains.kotlin:kotlin-compiler-embeddable", version.ref = "kotlin" }
kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-gradlePlugin-api = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin-api", version.ref = "kotlin" }
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
mordant = "com.github.ajalt.mordant:mordant:2.1.0"
truth = "com.google.truth:truth:1.1.5"

View File

@ -0,0 +1,7 @@
public abstract interface class dev/msfjarvis/tracelog/runtime/TracingConsumer {
public abstract fun trace (JLjava/lang/String;Ljava/lang/String;B)V
}
public abstract interface annotation class dev/msfjarvis/tracelog/runtime/annotations/DebugLog : java/lang/annotation/Annotation {
}

View File

@ -0,0 +1,7 @@
public abstract interface class dev/msfjarvis/tracelog/runtime/TracingConsumer {
public abstract fun trace (JLjava/lang/String;Ljava/lang/String;B)V
}
public abstract interface annotation class dev/msfjarvis/tracelog/runtime/annotations/DebugLog : java/lang/annotation/Annotation {
}

View File

@ -1,4 +1,31 @@
plugins { id("tracelog-kmp-library") }
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.android.library)
}
traceLogBuild { publishing() }
kotlin {
jvmToolchain(11)
jvm()
androidTarget()
iosX64()
iosArm64()
tvosX64()
tvosArm64()
watchosX64()
watchosArm32()
watchosArm64()
macosX64()
macosArm64()
iosSimulatorArm64()
watchosSimulatorArm64()
tvosSimulatorArm64()
mingwX64()
linuxX64()
androidNativeArm32()
androidNativeArm64()
}
android {
compileSdk = 33

View File

@ -0,0 +1 @@
POM_ARTIFACT_ID=runtime

View File

@ -1,24 +1,16 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("tracelog-jvm-library")
alias(libs.plugins.kotlin.jvm)
id("dev.msfjarvis.tracelog")
application
}
kotlin.jvmToolchain(11)
traceLog { loggerFunction.set("dev.msfjarvis.tracelog.sample.recordMessage") }
application { mainClass.set("dev.msfjarvis.tracelog.sample.MainKt") }
tasks.withType<KotlinCompile>().configureEach {
compilerOptions.freeCompilerArgs.addAll(
"-P",
"plugin:dev.msfjarvis.tracelog:loggerFunction=dev.msfjarvis.tracelog.sample.recordMessage",
"-P",
"plugin:dev.msfjarvis.tracelog:debugAnnotation=dev/msfjarvis/tracelog/runtime/annotations/DebugLog",
)
}
dependencies {
implementation(platform(embeddedKotlin("bom")))
kotlinCompilerPluginClasspath(projects.compilerPlugin)
implementation(projects.runtime)
implementation(libs.mordant)
}

View File

@ -1,17 +1,12 @@
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTargetWithHostTests
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins { kotlin("multiplatform") }
tasks.withType<KotlinCompile>().configureEach {
compilerOptions.freeCompilerArgs.addAll(
"-P",
"plugin:dev.msfjarvis.tracelog:loggerFunction=recordMessage",
"-P",
"plugin:dev.msfjarvis.tracelog:debugAnnotation=dev/msfjarvis/tracelog/runtime/annotations/DebugLog",
)
plugins {
alias(libs.plugins.kotlin.multiplatform)
id("dev.msfjarvis.tracelog")
}
traceLog { loggerFunction.set("recordMessage") }
fun KotlinNativeTargetWithHostTests.configureTarget() = binaries {
executable { entryPoint = "main" }
}
@ -22,8 +17,6 @@ kotlin {
macosX64 { configureTarget() }
dependencies {
commonMainImplementation(platform(embeddedKotlin("bom")))
kotlinCompilerPluginClasspath(projects.compilerPlugin)
commonMainImplementation(projects.runtime)
commonMainImplementation(libs.mordant)
}

View File

@ -20,6 +20,7 @@ pluginManagement {
includeGroup("com.android.tools.lint")
includeGroup("com.android.tools.utp")
includeGroup("com.google.testing.platform")
includeModule("com.android.library", "com.android.library.gradle.plugin")
includeModule("com.android.tools", "annotations")
includeModule("com.android.tools", "common")
includeModule("com.android.tools", "desugar_jdk_libs")
@ -61,10 +62,13 @@ dependencyResolutionManagement {
includeGroup("com.android.tools.lint")
}
}
mavenLocal { content { includeModule("dev.msfjarvis.tracelog", "compiler-plugin") } }
mavenCentral()
}
}
plugins { id("dev.msfjarvis.tracelog.settings") }
rootProject.name = "TraceLog"
include(