Gradle 1.0 +Spring + AspectJ build problems

匿名 (未验证) 提交于 2019-12-03 02:20:02

问题:

I am migrating a Maven build into Gradle for a project relying on @Configurable Spring annotations, however when my (web) application is running none of the @Configurable classes are getting injected under the Gradle build (they were working fine built my Maven).

In Maven I used the following plugin:

    <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> 

For Gradle 1.0 I adapted the 0.9 ajc plugin (url below) but couldn't figure out how to add the configuration/aspectLibraries/spring-aspects into this:

    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' } 

What do I need to do to get spring-aspects working in Gradle built web applications?

Thanks

回答1:

I know this post is 5 years old but I have the answer and it seems nobody else on the internet does. I'm using Gradle 3.3 though (Give me a break, it's 2017). Here's my Gradle build file to get AWS SWF Workflows along with @Asynchronous tags working.

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' } 

The key thing that caught me was adding the aspectpath to the dependencies. Took me ages to figure that out.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!