簡體   English   中英

如何從build.gradle根文件向Android Gradle子項目添加javadoc任務?

[英]How to add a javadoc task to Android Gradle subprojects from the root build.gradle file?

我有一個包含多個android項目的工作區,如下所示:

    • 開發包
      • Android庫1
      • Android lib 2
      • ...
    • 樣品
      • Android應用程式1
      • Android應用程式2

所有項目都使用gradle進行編譯。

我可以使用以下代碼添加指令以在Android應用和lib上生成javadoc:

applicationVariants.all {...}
or
libraryVariants.all { variant ->
    println variant
    task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
        description "Generates Javadoc for $variant.name."
        source = variant.javaCompile.source
        ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
        classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
        options.links("http://docs.oracle.com/javase/7/docs/api/");
        options.linksOffline("http://d.android.com/reference", "${android.sdkDirectory}/docs/reference");
        exclude '**/BuildConfig.java'
        exclude '**/R.java'
    }
}

我想要的是將該指令從根項目中的build.gradle文件添加到所有子項目中。

我相信這將使用subprojects {}指令,但是在配置過程之后,我不知道如何在該指令中運行代碼,而且我也不知道如何檢測我的應用程序是否是庫。

實際上,我成功使用了subprojects {}指令。

關鍵是使用afterEvaluate {} ,所以我可以使用android gradle插件添加的android屬性。

這是我結尾的代碼:

subprojects{
    afterEvaluate { project ->
        if(project.hasProperty('android')){
            if(project.android.hasProperty('libraryVariants')) {
                project.android.libraryVariants.all { variant ->
                    println variant
                    task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
                        description "Generates Javadoc for $variant.name."
                        source = variant.javaCompile.source
                        ext.androidJar = "${project.android.sdkDirectory}/platforms/${project.android.compileSdkVersion}/android.jar"
                        classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
                        options.links("http://docs.oracle.com/javase/7/docs/api/");
                        options.linksOffline("http://d.android.com/reference", "${project.android.sdkDirectory}/docs/reference");
                        exclude '** /BuildConfig.java'
                        exclude '** /R.java'
                    }
                }
            }
            else if (project.android.hasProperty('applicationVariants')){
                project.android.applicationVariants.all { variant ->
                println variant
                task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
                    description "Generates Javadoc for $variant.name."
                    source = variant.javaCompile.source
                    ext.androidJar = "${project.android.sdkDirectory}/platforms/${project.android.compileSdkVersion}/android.jar"
                    classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)
                    options.links("http://docs.oracle.com/javase/7/docs/api/");
                    options.linksOffline("http://d.android.com/reference", "${project.android.sdkDirectory}/docs/reference");
                    exclude '** /BuildConfig.java'
                    exclude '** /R.java'
                    }
                }
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM