当前位置:  开发笔记 > 编程语言 > 正文

Gradle,Javadoc和Android文档

如何解决《Gradle,Javadoc和Android文档》经验,为你挑选了2个好方法。

我现在正在将Gradle用于我的所有项目,甚至用于javadoc生成.

android.libraryVariants.all { variant ->

    task("generate${variant.name}Javadoc", type: Javadoc) {
        title = "$name $version API"
        source = variant.javaCompile.source
        ext.androidJar = "${android.plugin.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
        ext.googlePlayServicesJar = "${android.plugin.sdkDirectory}/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar"
        classpath = files(variant.javaCompile.classpath.files, ext.androidJar, ext.googlePlayServicesJar)
        options.links("http://docs.oracle.com/javase/7/docs/api/");
        options.links("http://d.android.com/reference/");
        //options.linksOffline("http://d.android.com/reference", "${android.plugin.sdkDirectory}/docs/reference");
        exclude '**/BuildConfig.java'
        exclude '**/R.java'
    }

}

使用该代码,我得到了一切工作,除了一件事:常规的Android API对象,如Activity,Bitmap等.Java的链接工作正常.

最终生成的文档未链接到http://d.android.com/reference.我尝试了两个options.links()options.linksOffline()但没有成功.

编辑

感谢@ejb,问题在于您无法同时提供多个options.links().所以我使用了options.links()Java的文档和options.linksOffline()Android的文档:

options {
    links("http://docs.oracle.com/javase/7/docs/api/");
    linksOffline("http://d.android.com/reference", "${android.plugin.sdkDirectory}/docs/reference");
    //stylesheetFile = new File(projectDir, "stylesheet.css");
}

ejb.. 28

我能够使用以下代码段成功链接到http://d.android.com/reference,这个功能正是你所拥有的(据我所知).

 android.libraryVariants.all { variant -> 
   task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
     // title = ''
     // description = ''
     source = variant.javaCompile.source 
     classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath()) 
     options { 
       links "http://docs.oracle.com/javase/7/docs/api/" 
       linksOffline "http://d.android.com/reference","${android.sdkDirectory}/docs/reference" 
     } 
     exclude '**/BuildConfig.java' 
     exclude '**/R.java' 
   } 
 }

所以这里还有其他不妥之处.

您必须脱机构建javadoc,因为它似乎不在package-listWeb服务的路径上可用.也许仔细检查你确实有本地加载的文档,并确保有一个package-list/[android-sdk]/docs/reference目录中.

如果你仍然无法弄明白,也许你可以发布输出.

您可能检查的另一件事是./build/tmp/[taskname]/javadoc.options,head所述文件应显示仔细设置的相应选项.要检查的内容包括在-classpath中正确包含android.jar以及linksOffline与预期参数的存在:-linksoffline extDocURL packageListLoc

javadoc.options 应该有两个选项只有相应的参数:

-linksoffline 'http://d.android.come/reference' '[sdkDir]/docs/reference'
-links 'http://docs.oracle.com/javase/7/docs/api/' 

编辑:android.getBootClasspath()更好,感谢P-chan.



1> ejb..:

我能够使用以下代码段成功链接到http://d.android.com/reference,这个功能正是你所拥有的(据我所知).

 android.libraryVariants.all { variant -> 
   task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
     // title = ''
     // description = ''
     source = variant.javaCompile.source 
     classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath()) 
     options { 
       links "http://docs.oracle.com/javase/7/docs/api/" 
       linksOffline "http://d.android.com/reference","${android.sdkDirectory}/docs/reference" 
     } 
     exclude '**/BuildConfig.java' 
     exclude '**/R.java' 
   } 
 }

所以这里还有其他不妥之处.

您必须脱机构建javadoc,因为它似乎不在package-listWeb服务的路径上可用.也许仔细检查你确实有本地加载的文档,并确保有一个package-list/[android-sdk]/docs/reference目录中.

如果你仍然无法弄明白,也许你可以发布输出.

您可能检查的另一件事是./build/tmp/[taskname]/javadoc.options,head所述文件应显示仔细设置的相应选项.要检查的内容包括在-classpath中正确包含android.jar以及linksOffline与预期参数的存在:-linksoffline extDocURL packageListLoc

javadoc.options 应该有两个选项只有相应的参数:

-linksoffline 'http://d.android.come/reference' '[sdkDir]/docs/reference'
-links 'http://docs.oracle.com/javase/7/docs/api/' 

编辑:android.getBootClasspath()更好,感谢P-chan.



2> Flinbor..:

对于Android Gradle插件1.1.2+(com.android.tools.build:gradle:1.1.+)

libraryVariants - 不再起作用了

使用:

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    destinationDir = file("../javadoc/")
    failOnError false
}

destinationDir = file("../ javadoc /") - 在项目目录的根目录下找到javadocs(这样jenkins javadoc插件可以找到它并在特殊的Document面板中显示)

failOnError false - 用于抑制可能导致jenkins构建失败的警告


Gradle JavaDocs的替代方案

Doxygen - 交叉参考文档工具.

可以从UI或终端运行:http://www.doxygen.nl/manual/doxygen_usage.html


生成javadoc可用throw java工具:' javadoc '

从命令行运行:

javadoc -d docs -sourcepath app/src/main/java -subpackages com

docs - 目标文件夹


这对我来说很好.虽然我在设置类路径的行之前添加了额外的行"classpath + = configurations.compile".没有它,它将找不到我在项目中的JAR库中的方法.
推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有