freefair / gradle-plugins

Gradle Plugin Collection
https://docs.freefair.io/gradle-plugins/current/reference/
MIT License
219 stars 32 forks source link

-aspectpath of external library(post compile weaving) #1110

Open Kirill614 opened 5 months ago

Kirill614 commented 5 months ago

Hello, i am using io.freefair.aspectj.post-compile-weaving. When i have aspectj directory (with the aspect class) in root of my project - everything ok, but i need weave aspect from external library with my project sources, so i have this build.gradle file :

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.6.3'
    id 'io.spring.dependency-management' version '1.1.4'
    id "io.freefair.aspectj.post-compile-weaving" version "8.6"
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '16'
    targetCompatibility = '16'
}

configurations {
    aspect
}

repositories {
    maven {
        url = uri("https://plugins.gradle.org/m2/")
    }
    mavenCentral()
    mavenLocal()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    aspect 'ru.vtb.smeg.lib:log-masker:1.3.1'
}

tasks.named('test') {
    useJUnitPlatform()
}

aspect 'ru.vtb.smeg.lib:log-masker:1.3.1' - its my external library which contains aspect class and all nesessary dependencies like aspectjrt, aspectjtools, aspectweaver. But when i build my project, i have this error:

java.lang.RuntimeException: Problem processing attributes in org/aspectj/ajdt/internal/compiler/CompilerAdapter.class
    at org.aspectj.weaver.bcel.BcelObjectType.ensureAspectJAttributesUnpacked(BcelObjectType.java:386)
    at org.aspectj.weaver.bcel.BcelObjectType.<init>(BcelObjectType.java:161)
    at org.aspectj.weaver.bcel.BcelWorld.buildBcelDelegate(BcelWorld.java:410)
    at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:487)
    at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:453)
    at org.aspectj.weaver.bcel.BcelWeaver.addAspectsFromJarFile(BcelWeaver.java:265)
    at org.aspectj.weaver.bcel.BcelWeaver.addLibraryJarFile(BcelWeaver.java:238)
    at org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(AjBuildManager.java:868)
    at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:252)
    at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:188)
    at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:103)
    at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:47)
    at org.aspectj.tools.ajc.Main.run(Main.java:372)
    at org.aspectj.tools.ajc.Main.runMain(Main.java:250)
    at org.aspectj.tools.ajc.Main.main(Main.java:84)
Caused by: org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute (length:293)org.aspectj.weaver.BCException: Bad type signature org.aspectj.weaver.WeaverVersion
when batch building BuildConfig[null] #Files=0 AopXmls=#0

So how can i compile and weave aspect from external library taking into account that i need post compile weaving?

larsgrefer commented 5 months ago

Your gradle configuration looks good to me. (Manually creating the aspect Configuration should not be necessary, but it should not hurt either)

Could you run the build with --info? With which aspectj version was the aspect compiled?