You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle集成AspectJ依赖切面失效及插件找不到问题求助

解决方案

1. 替换正确的AspectJ Gradle插件

你使用的org.aspectj.aspectj插件并非维护中的Gradle插件,无法在官方仓库找到。当前主流且兼容Gradle 7.x的是Freefair维护的io.freefair.aspectj插件。

首先在settings.gradle中确保插件仓库配置正确:

pluginManagement {
    repositories {
        gradlePluginPortal()
        mavenCentral()
    }
}

然后在Project B的build.gradle中替换插件配置:

plugins {
    id 'java'
    id 'io.freefair.aspectj' version '6.6.3' // 6.x系列适配Gradle 7.4.2,版本可按需调整
}

2. 配置AspectJ织入规则

明确指定包含切面的Project A作为aspectPath,让AspectJ编译器扫描并织入这些切面,同时对齐Java版本:

aspectj {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
    // 指向存放切面的Project A
    aspectPath += project(':projectA')
}

3. 修正依赖配置

合并重复的dependencies块,确保Project A和AspectJ运行时库正确引入:

dependencies {
    implementation project(':projectA')
    // 与插件适配的AspectJ运行时库版本,6.6.3插件对应1.9.7版本
    implementation 'org.aspectj:aspectjrt:1.9.7'
}

4. 验证织入效果

执行编译命令检查日志,确认AspectJ完成织入:

./gradlew compileJava

若需动态加载类的运行时织入,可给Java执行任务添加JVM参数:

tasks.withType(JavaExec) {
    jvmArgs '-javaagent:path/to/aspectjweaver-1.9.7.jar'
}

编译时织入场景下,前3步配置已足够生效。


关键提示

  • 原org.aspectj.aspectj插件已停止维护,不存在于Gradle插件仓库,必须替换为Freefair的插件。
  • aspectPath必须明确指向Project A,否则AspectJ无法识别切面代码,导致织入失败。
  • 保持AspectJ核心库版本与插件版本匹配,避免版本冲突。

内容的提问来源于stack exchange,提问作者hema

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:35:53