wviana
wviana

Reputation: 1937

Why gradle is not finding AspectJ packages

I'm training AOP in SpringBoot

So for using AspectJ annotations I've add runtimeOnly 'org.aspectj:aspectjweaver:1.9.7' into my gradle dependencies section.

plugins {
    id 'org.springframework.boot' version '2.5.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'br.com.wviana'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    runtimeOnly 'org.aspectj:aspectjweaver:1.9.7'
}

test {
    useJUnitPlatform()
}

My Aspect class is like the follow:

package br.com.wviana.demo;

import java.util.logging.Logger;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class DemoApplicationAspec {

    private Logger logger = Logger.getLogger(getClass().getName());

    @Pointcut("execution(* br.com.wviana.demo.GreetingController.greeting(..))")
    private void forGreeting() { }

    @Before("forGreeting()")
    public void beforeGreeting(JoinPoint theJoinPoint) {

        String methodName = theJoinPoint.getSignature().toShortString();
        logger.info("====> in @Before: " + methodName);

    }

}

My editor has recognized the annotations in autocomplete. I use neovim with jdts as language server.

But when I try to run the project using ./gradlew bootRun I get the follow erros

> Task :compileJava FAILED
/Users/wesley.viana/Repos/springboot-demo/src/main/java/br/com/wviana/demo/DemoApplicationAspec.java:5: error: package org.aspectj.lang does not exist
import org.aspectj.lang.JoinPoint;
                       ^
/Users/wesley.viana/Repos/springboot-demo/src/main/java/br/com/wviana/demo/DemoApplicationAspec.java:6: error: package org.aspectj.lang.annotation does not
 exist
import org.aspectj.lang.annotation.Aspect;
                                  ^
/Users/wesley.viana/Repos/springboot-demo/src/main/java/br/com/wviana/demo/DemoApplicationAspec.java:7: error: package org.aspectj.lang.annotation does not
 exist
import org.aspectj.lang.annotation.Before;
                                  ^
/Users/wesley.viana/Repos/springboot-demo/src/main/java/br/com/wviana/demo/DemoApplicationAspec.java:8: error: package org.aspectj.lang.annotation does not
 exist
import org.aspectj.lang.annotation.Pointcut;
                                  ^
/Users/wesley.viana/Repos/springboot-demo/src/main/java/br/com/wviana/demo/DemoApplicationAspec.java:11: error: cannot find symbol
@Aspect
 ^
  symbol: class Aspect
/Users/wesley.viana/Repos/springboot-demo/src/main/java/br/com/wviana/demo/DemoApplicationAspec.java:21: error: cannot find symbol
        public void beforeGreeting(JoinPoint theJoinPoint) {
                                   ^
  symbol:   class JoinPoint
  location: class DemoApplicationAspec
/Users/wesley.viana/Repos/springboot-demo/src/main/java/br/com/wviana/demo/DemoApplicationAspec.java:17: error: cannot find symbol
        @Pointcut("execution(* br.com.wviana.demo.GreetingController.greeting(..))")
         ^
  symbol:   class Pointcut
  location: class DemoApplicationAspec
/Users/wesley.viana/Repos/springboot-demo/src/main/java/br/com/wviana/demo/DemoApplicationAspec.java:20: error: cannot find symbol
        @Before("forGreeting()")
         ^
  symbol:   class Before
  location: class DemoApplicationAspec
8 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
1 actionable task: 1 executed

Am I missing something?

Upvotes: 1

Views: 2889

Answers (1)

mantatov
mantatov

Reputation: 56

try to add id "io.freefair.aspectj" version "5.3.3.3" into plugin section and outside plugin section

targetCompatibility = '11'

sourceSets.main.aspectj.srcDir "src/main/java"
sourceSets.main.java.srcDirs = files()

change runtimeOnly on compile and add

    implementation "org.aspectj:aspectjrt:1.9.7"

your file will look like this

plugins {
    id 'org.springframework.boot' version '2.5.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id "io.freefair.aspectj" version "5.3.3.3"
}

group = 'br.com.wviana'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
targetCompatibility = '11'

sourceSets.main.aspectj.srcDir "src/main/java"
sourceSets.main.java.srcDirs = files()

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation "org.aspectj:aspectjrt:1.9.7"
    implementation "org.aspectj:aspectjweaver:1.9.7"
}

test {
    useJUnitPlatform()
}

Upvotes: 4

Related Questions