Gradle 1.0 +Spring + AspectJ 构建问题

2023-12-07

我正在将一个依赖 @Configurable Spring 注释的项目的 Maven 构建迁移到 Gradle 中,但是当我的(Web)应用程序运行时,没有任何 @Configurable 类被注入到 Gradle 构建中(它们在构建我的 Maven 时运行良好)。

在 Maven 中我使用了以下插件:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.4</version>

        <executions>
            <execution>
                <goals>
                    <goal>compile</goal>
                    <goal>test-compile</goal>
                </goals>
            </execution>
        </executions>

        <configuration>
            <aspectLibraries>
                <aspectLibrary>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aspects</artifactId>
                </aspectLibrary>
            </aspectLibraries>
            <source>${java.version}</source>
            <target>${java.version}</target>
        </configuration>
    </plugin>

对于 Gradle 1.0,我改编了 0.9 ajc 插件(网址如下),但无法弄清楚如何将配置/aspectLibraries/spring-aspects 添加到其中:

    apply plugin: 'war'
apply plugin: 'jetty'

sourceCompatibility = 1.6
version = 1.0
// Based on: http://github.com/breskeby/gradleplugins/raw/0.9-upgrade/aspectjPlugin/aspectJ.gradle    
configurations {
    ajc
    aspects
    ajInpath
}

task compileJava(dependsOn: JavaPlugin.PROCESS_RESOURCES_TASK_NAME, overwrite: true)  {
    dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileJava")

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

dependencies {
    ajc     group: 'org.aspectj',                     name: 'aspectjtools',                   version: '1.6.12'
    compile group: 'org.aspectj',                     name: 'aspectjrt',                      version: '1.6.12'
    compile group: 'org.aspectj',                     name: 'aspectjweaver',                  version: '1.6.12'

    compile group: 'org.springframework',             name: 'spring-jdbc',                    version: '3.1.1.RELEASE'
    compile group: 'org.springframework',             name: 'spring-orm',                     version: '3.1.1.RELEASE'
    compile group: 'org.springframework',             name: 'spring-aop',                     version: '3.1.1.RELEASE'
    compile group: 'org.springframework',             name: 'spring-aspects',                 version: '3.1.1.RELEASE'
    compile group: 'org.springframework',             name: 'spring-web',                     version: '3.1.1.RELEASE'
    compile group: 'org.springframework',             name: 'spring-webmvc',                  version: '3.1.1.RELEASE'
    compile group: 'org.springframework',             name: 'spring-expression',              version: '3.1.1.RELEASE'
}

我需要做什么才能让 spring-aspects 在 Gradle 构建 Web 应用程序中工作?

Thanks


我知道这篇文章已经有 5 年历史了,但我已经有了答案,而且互联网上似乎没有其他人知道。不过,我正在使用 Gradle 3.3(让我休息一下,现在是 2017 年了)。这是我的 Gradle 构建文件,用于让 AWS SWF 工作流和 @Asynchronous 标签一起工作。

buildscript {
    repositories {
        maven {
            url "https://maven.eveoh.nl/content/repositories/releases"
        }
    }

    dependencies {
        classpath "nl.eveoh:gradle-aspectj:1.6"
    }
}

project.ext {
    aspectjVersion = '1.8.9'
}

apply plugin: 'aspectj'
apply plugin: 'java'

dependencies {
    compile group: 'org.aspectj', name: 'aspectjrt', version:'1.8.9'
    compile group: 'org.aspectj', name: 'aspectjtools', version:'1.8.9'
    compile group: 'org.freemarker', name: 'freemarker', version:'2.3.25-incubating'
    compile group: 'com.amazonaws', name: 'aws-java-sdk-swf-libraries', version:'1.11.22'
    compile group: 'com.amazonaws', name: 'aws-swf-build-tools', version:'1.1'
    compile(group: 'org.springframework.boot', name: 'spring-boot-starter', version:'1.4.0.RELEASE') {
        exclude(module: 'commons-logging')
    }
    compile group: 'org.springframework.boot', name: 'spring-boot-configuration-processor', version:'1.4.0.RELEASE'
    testCompile(group: 'org.springframework.boot', name: 'spring-boot-starter-test', version:'1.4.0.RELEASE') {
        exclude(module: 'commons-logging')
    }
    aspectpath group: 'com.amazonaws', name: 'aws-java-sdk-swf-libraries', version:'1.11.22'
}

吸引我的关键是将方面路径添加到依赖项中。我花了很长时间才弄清楚这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle 1.0 +Spring + AspectJ 构建问题 的相关文章

随机推荐

  • DC.js 交叉过滤器维度计数直方图

    我有一个交叉过滤器 输入了以下数据结构 project subproject cost data PrA SubPr1 100 PrA SubPr2 150 PrA SubPr3 100 PrB SubPr4 300 PrB SubPr5
  • 如何从 chrome 扩展监听 javascript 中的卸载事件?

    当用户从 Chrome 浏览器卸载我的扩展程序时 我试图清理一些首选项文件 在谷歌网站上 http code google com chrome extensions external extensions html 他们说 要卸载您的扩展
  • 取消 ThreadPool .QueueUserWorkItem 任务

    我需要取消使用 ThreadPool QueueUserWorkItem 启动的后台任务 我知道BackgroundWorker有专门针对此类事情的构造 但我相信在这种情况下它是矫枉过正的 因为不涉及用户界面 我所说的取消只是指强制完成回调
  • 如何使用内连接将两个数据表连接在一起

    所以我有 2 个数据表 我想将它们合并为 1 个 就像一个数据表与 sql server 中的内部联接合并一样 一个问题是两个表中的某些字段名称相同 但值可能不同 例如定价值 这两个表都有一个列 ID 它们具有相同的值并且可以连接 您可以通
  • 理解Fragment的setRetainInstance(boolean)

    从文档开始 公共无效setRetainInstance 布尔保留 控制是否在 Activity 重新创建过程中保留片段实例 例如从配置更改中 这只能与不在返回堆栈中的片段一起使用 如果设置 重新创建 Activity 时片段生命周期将略有不
  • VBA:仅导入 csv 文件的选定列

    我使用 VBA 将 csv 文件从 Yahoo Finance 导入到 Excel 中 每行包含 7 个逗号分隔的值 我只想导入每行的第一个和第五个逗号分隔值 目前 我导入整个 csv 将其提取到列 然后删除不需要的列 然而 这不足以满足将
  • Matlab dir() 需要永远运行

    我在包含 500 000 个文件的目录上使用命令 dir 现在已经运行了 15 分钟 有什么办法可以加快速度吗 也许有一个替代命令 提前致谢 Gil 如果您只想要文件名 请尝试files ls 根据帮助 我相信ls应该适用于任何操作系统 原
  • Python:替换双引号中的制表符

    您好 我有一行想要替换双引号中的制表符 我已经为此编写了脚本 但它没有按我想要的方式工作 我的线路 Q3U962 Mus musculus MRMP mouse Optimization MRMP mouse 我的脚本 for replin
  • ECMAScript 对象展开/休息 - 一次分配给多个属性

    新的对象休息 传播语法有一些令人惊讶的好应用 例如从对象中省略字段 是否有一种 建议的 方法也可以将同名变量的值分配给对象的多个属性 换句话说 更简短的说法是 o foo foo o bar bar o baz baz 注 在不丢失现有属性
  • Android Studio占用内存过多

    I had installed Android Studio 1 0 RC 2 I have 4GB of RAM installed but after starting Android Studio and launching Andr
  • 使用 Fragments 进行 Facebook 共享

    我在用Facebbok在我的应用程序中共享 我有一个listview在我的列表项中我有一个Button 单击Button我正在尝试分享我的东西 但问题是当我用活动扩展我的类时 我的代码工作正常 但它不适用于Fragment 以下是我的代码片
  • 我们如何向 Flutter 小部件添加选择器/id,以便可以从 Appium 访问它们

    我们想使用 Appium Selenium 对 Flutter 应用程序进行自动化测试 在 Selenium 中查看时 某些元素没有选择器 在 Android 中 我们只需将 id 添加到每个元素上 它们就会出现在 Appium 中 我们如
  • 远程登录 Facebook 帐户

    出于我的项目目的 我需要远程登录我的 Facebook 帐户并从那里检索一些信息 为了登录目的 我使用 PHP 的 cURL 库 执行代码时 Facebook 页面要求我在浏览器上启用我已经启用的 cookie 代码有问题吗 有人可以帮助我
  • 通过 XSSFRichTexString 和 Jsoup 格式化 Apache POI Excel 文本

    我正在从数据库获取 html 数据 下面是示例 ul li strong Iam Bold strong u span style color Red Iam Red Colored and Underlined span u li li
  • 有什么方法可以扩展 javascript 的 array.sort() 方法以接受另一个参数吗?

    我正在尝试对对象数组进行排序 我不想为每个属性编写自定义排序方法 无论如何我可以扩展内置的array sort 接受额外参数的方法 描述要排序的属性 例如 array sort function a b attr return a attr
  • Pushsharp 苹果通知调用 SSPI 失败错误

    我正在使用 PushSharp 在 C 中发送 Apple 推送通知 我有我的生产 pem 文件及其密码 下面是我的代码片段 我总是收到此错误 A call to SSPI failed see inner exception gt Sys
  • 检查 firestore 文档是否为特定类型文档的方法

    我有一个 Android Studio 项目 有 2 个用户集合 培训师和学员 我想创建一个方法 接收用户的字符串电子邮件作为输入 用户的电子邮件是两个集合中的文档 ID 用户可以在受训者集合中 也可以在培训师集合中 但不能同时在两者中 并
  • 这个 double 是什么格式以及如何转换它?

    我正在阅读一个遗留的网络服务 它以我不熟悉的格式返回双精度数 一些例子是 1 58e 6 1 56e 6 1 45e 6 他们应该代表这样的双打 例如 0 000004343 这是什么格式以及如何转换 你可以这样转换 1 58e 6 1 5
  • 从给定纬度和经度的固定距离生成随机地理点

    我正在编写一个java程序来生成距给定点固定距离的所有经度和纬度 距离必须精确为 2000 公里 不能小于 2000 公里 这是我的代码 public static void getLocation double x0 double y0
  • Gradle 1.0 +Spring + AspectJ 构建问题

    我正在将一个依赖 Configurable Spring 注释的项目的 Maven 构建迁移到 Gradle 中 但是当我的 Web 应用程序运行时 没有任何 Configurable 类被注入到 Gradle 构建中 它们在构建我的 Ma