在一个Kotlin项目中使用Freefair Applying J插件(使用gradle)

brqmpdu1  于 2023-11-18  发布在  Kotlin
关注(0)|答案(1)|浏览(141)

我在我的Kotlin项目中遇到了配置ApplyJ的问题。我正在使用freefair插件,但它似乎不起作用。我启动我的应用程序没有问题,但没有考虑到这些方面。
我将我的方面放在src/main/aspectj源目录中的MetricAspect.kt文件中
我现在有一个gradle.build.kts文件,看起来像这样:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    //other plugins

    id("io.freefair.aspectj") version "6.6.3"

    val kotlinVersion = "1.7.21"
    kotlin("jvm") version kotlinVersion
    kotlin("plugin.spring") version kotlinVersion

    //other plugins
}

allprojects {
    apply(plugin = "org.jetbrains.kotlin.jvm")
    apply(plugin = "io.gitlab.arturbosch.detekt")
    apply(plugin = "com.diffplug.spotless")
    apply(plugin = "io.freefair.aspectj")
    apply(plugin = "kotlin-spring")
    version = "1.0.0-SNAPSHOT"

    java {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }

    

    repositories {
        maven {
            url = uri("https://private.repo/public-maven-virtual/")
            credentials {
                username = user
                password = password
            }
        }
    }

    dependencies {

        kotlinCompilerPluginClasspath("gradle.plugin.aspectj:gradle-aspectj:0.1.6")
        
        //other deps

        implementation("org.aspectj:aspectjrt:1.9.7")
        annotationProcessor("org.aspectj:aspectjtools:1.9.7")

        //other deps
    }

    tasks.withType<KotlinCompile> {
        kotlinOptions {
            freeCompilerArgs = listOf("-Xjsr305=strict")
            jvmTarget = "17"
        }
    }

    tasks.withType<Test> {
        useJUnitPlatform()
    }

    spotless {
        //....
    }

    detekt {
        buildUponDefaultConfig = true // preconfigure defaults
        allRules = false // activate all available (even unstable) rules.
        parallel = true
        config = files("$rootDir/detekt.yml")
    }
}

tasks {
    bootJar {
        enabled = false
    }
}

字符串
关于它的文档非常稀少,每个人似乎都有一种方法来配置这个插件,这很奇怪。有没有官方的方法来做到这一点?

6rqinv9w

6rqinv9w1#

编译器只能理解基于注解的Java语法和原生编译器语法。如果你想使用其他JVM语言,如Kotlin,你需要使用编译后编织。Freefair有一个选项。

相关问题