gradle檔案中引入其他gradle檔案
阿新 • • 發佈:2018-12-14
背景:
安卓專案中,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'