gradle文件中引入其他gradle文件

背景:

    安卓项目中,gradle文件也逐渐变得臃肿起来,需要分开管理,否则一大堆在一起,就很难维护了。

解决方案:

  采用apply from: 'xx.gradle'这样的语句就可以引入其他gradle文件了。

Demo(集成aspectj):   

   1.aspectj.gradle (存放目录: 项目根目录下)

import org.aspectj.bridge.IMessage
import org.aspectj.bridge.MessageHandler
import org.aspectj.tools.ajc.Main
 
final def log = project.logger
final def variants = project.android.applicationVariants
 
buildscript {
 
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
        jcenter()
    }
    dependencies {
        classpath 'org.aspectj:aspectjtools:1.9.1'
    }
}
 
variants.all { variant ->
    if (!variant.buildType.isDebuggable()) {
        log.debug("Skipping non-debuggable build type '${variant.buildType.name}'.")
        return;
    }
 
    JavaCompile javaCompile = variant.javaCompile
    javaCompile.doLast {
        String[] args = ["-showWeaveInfo",
                         "-1.8",
                         "-inpath", javaCompile.destinationDir.toString(),
                         "-aspectpath", javaCompile.classpath.asPath,
                         "-d", javaCompile.destinationDir.toString(),
                         "-classpath", javaCompile.classpath.asPath,
                         "-bootclasspath", project.android.bootClasspath.join(File.pathSeparator)]
        log.debug "ajc args: " + Arrays.toString(args)
 
        MessageHandler handler = new MessageHandler(true);
        new Main().run(args, handler);
        for (IMessage message : handler.getMessages(null, true)) {
            switch (message.getKind()) {
                case IMessage.ABORT:
                case IMessage.ERROR:
                case IMessage.FAIL:
                    log.error message.message, message.thrown
                    break;
                case IMessage.WARNING:
                    log.warn message.message, message.thrown
                    break;
                case IMessage.INFO:
                    log.info message.message, message.thrown
                    break;
                case IMessage.DEBUG:
                    log.debug message.message, message.thrown
                    break;
            }
        }
    }
}
dependencies {
    implementation 'org.aspectj:aspectjrt:1.9.1'
}
  2.app的gradle文件头部引入

apply from: 'aspectj.gradle'
 

上一篇:spring-aop-aspectj


下一篇:spring源码