使用Java代码的Gradle自定义任务

使用Java代码的Gradle自定义任务

问题描述:

我正在使用Gradle,并且需要在编译阶段进行一些预处理.我的预处理器是来自外部库(从Maven Central加载的依赖项)中的类.我怎么写这样的 task ?

I'm using Gradle, and I need to make some preprocessing on compilation phase. My preprocessor is a class from an external library (a dependency, loaded from Maven Central). How can I wrote such task?

我有类似的代码:

  buildscript {
            repositories {
                maven { url 'http://repo1.maven.org/maven2' }
            }
            dependencies {
                classpath 'com.android.tools.build:gradle:0.5.+'
                classpath group: 'com.googlecode.htmlcompressor', name: 'htmlcompressor', version: '1.4'
            }
        }
        task compressXML {
                    logging.captureStandardOutput LogLevel.INFO
                    String xml = file('assets/menu.xml').text; 
                    XmlCompressor compressor = new XmlCompressor();
                    String compressedXml = compressor.compress(xml);
                    println compressedXml;
                }

但是Gradle看不到 XmlCompressor 类的问题:

but the problem that Gradle don't see XmlCompressor class:

build.gradle': 70: unable to resolve class XmlCompressor 
   @ line 70, column 27.
                 XmlCompressor compressor = new XmlCompressor();
                               ^

  build file '../build.gradle': 70: unable to resolve class XmlCompressor 
   @ line 70, column 40.
                 XmlCompressor compressor = new XmlCompressor();
                                            ^

  2 errors

(如果您使用 JCP预处理器,那么您可以访问其页面,并且有 wiki页面如何进行预处理android项目的gradle

if you use JCP preprocessor then you can visit its page and there is wiki page how to make preprocessing with gradle for android projects