当前位置: 首页 > 面试题库 >

AspectJ + Gradle配置

尚安平
2023-03-14
问题内容

我想在Gradle项目中使用AspectJ(这不是Android项目,只是一个简单的Java应用程序)。

这是我的build.gradle的样子:

apply plugin: 'java'

buildscript {
    repositories {
        maven {
            url "https://maven.eveoh.nl/content/repositories/releases"
        }
    }
    dependencies {
        classpath "nl.eveoh:gradle-aspectj:1.6"
    }
}

repositories {
    mavenCentral()
}

project.ext {
    aspectjVersion = "1.8.2"
}

apply plugin: 'aspectj'

dependencies {
    //aspectj dependencies
    aspectpath "org.aspectj:aspectjtools:${aspectjVersion}"
    compile "org.aspectj:aspectjrt:${aspectjVersion}"
}

代码可以编译,但是该方面似乎没有被编织。有什么事吗


问题答案:

我已经为此苦苦挣扎了一段时间,所以这个配置我使用并且效果很好。

在您的配置中执行此操作。

configurations {
    ajc
    aspects
    aspectCompile
    compile{
        extendsFrom aspects
    }
}

在依赖项中,使用以下配置。如果您不使用spring fwk,则不需要Spring依赖项。

dependencies {

    //Dependencies required for aspect compilation
    ajc "org.aspectj:aspectjtools:$aspectjVersion"
    aspects "org.springframework:spring-aspects:$springVersion"
    aspectCompile  "org.springframework:spring-tx:$springVersion"
    aspectCompile  "org.springframework:spring-orm:$springVersion"
    aspectCompile  "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:$hibernateJpaVersion"

}

compileJava {
    sourceCompatibility="1.7"
    targetCompatibility="1.7"
    //The following two lines are useful if you have queryDSL if not ignore
    dependsOn generateQueryDSL
    source generateQueryDSL.destinationDir

    dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileJava")

    doLast{
        ant.taskdef( resource:"org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties", classpath: configurations.ajc.asPath)
        ant.iajc(source:"1.7", target:"1.7", destDir:sourceSets.main.output.classesDir.absolutePath, maxmem:"512m", fork:"true",
                aspectPath:configurations.aspects.asPath,
                sourceRootCopyFilter:"**/.svn/*,**/*.java",classpath:configurations.compile.asPath){
            sourceroots{
                sourceSets.main.java.srcDirs.each{
                    pathelement(location:it.absolutePath)
                }
            }
        }
    }
}

我不使用使用ant和Aspectj编译器的插件来执行此操作,可能会有一种简单的方法



 类似资料:
  • 我想在Gradle上的Android项目中集成以下库: 隆坡 使用AspectJ进行机器人绑定 匕首 为了将RoboBinding与AspectJ和android工具1.1结合使用。0我使用此修复程序编译了aspectj插件。 所有库都使用一些编译时注释处理。我发现Lombok与AspectJ不兼容。我注意到Robobind的注释处理器使用的是apt,而lombok只在提供的情况下工作(Dagge

  • 我正在使用Spring 3.1.1版的应用程序中工作,现在我需要为其添加一些方面。这些方面是用aspectj语言编写的,没有注释。我已经阅读了Spring docs第8.8章,但我正在努力使其工作。 我的spring配置如下所示: 在我的pom中,是一个Maven项目,我有spring aop、aspectjrt和aspectjweaver作为依赖项。 我的问题是,当启动应用程序时,我得到了一个

  • 问题内容: 在Google IO中,宣布了新的构建系统gradle来替换ant。我的项目正在使用Aspectj,我想在我的项目中使用它。我无法弄清楚一些变量使其正常工作。我在那里找不到android。*输出类路径。有人可以帮忙吗? 这是我当前的build.gradle: 这是旧的ant代码,效果很好:http: //code.google.com/p/anymemo/source/browse/c

  • 这是一个已知的问题,因为Spring AOP使用的是基于代理的方法,该方法不会“看到”同一个类中的内部调用。显然我可以通过使用AspectJ而不是Spring AOP来解决这种情况。如果我没有理解错的话,它可以从Spring内部进行配置。从我的发现来看,我应该包含注释来配置Spring使用AspectJ而不是自己的AOP。不幸的是,这没有帮助,在添加注释之后,没有发生对被注释的方法的拦截。 Spr

  • 目录结构 1.Book,java 2.aop:BookProxy.java bean2.xml 1.在容器中注册两个组件 2.配置aop 1.切入点 2.切面 切入点为需要增强的方法 切面为增强的方向,是前方还是后方还是环绕还是异常还是返回 test 结果为在开始增强。

  • 本文向大家介绍gradle 按需配置,包括了gradle 按需配置的使用技巧和注意事项,需要的朋友参考一下 示例 如果对构建进行概要分析显示在“配置项目”上花费了大量时间,则“按需配置”选项可能会提高性能。 您可以通过编辑$GRADLE_USER_HOME/.gradle/gradle.properties(~/.gradle/gradle.properties默认情况下)并设置来启用按需配置模式