i've gone through entire internet in search of way how aggregate javadocs in project consisting of separate library modules single javadoc.
there plugin apparently allows that: https://github.com/nebula-plugins/gradle-aggregate-javadocs-plugin
however, if run command specified plugin gradle finds task , executes no output directory generated.
any how build single javadoc multiple modules appreciated.
i managed working time ago, apologies late response. solution aggregatable javadoc creation following:
in each of subprojects maintained within project create task generating javadoc:
android.libraryvariants.all { variant -> task("generate${variant.name.capitalize()}javadoc", type: javadoc) { destinationdir = project.file("$project.projectdir/javadoc/$project.project_name") //project name in project's gradle.properties title = "a title of project - $project.project_version_name" //project version name in project's gradle.properties description "generates javadoc $variant.name." source = variant.javacompile.source ext.androidjar ="${android.sdkdirectory}/platforms/${android.compilesdkversion}/android.jar" classpath = files(variant.javacompile.classpath.files) + files(ext.androidjar) + project.files(android.getbootclasspath().join(file.pathseparator)) options { memberlevel = org.gradle.external.javadoc.javadocmemberlevel.public //change modifier according needs links "http://docs.oracle.com/javase/8/docs/api/" linksoffline "http://d.android.com/reference", "${android.sdkdirectory}/docs/reference" } exclude '**/buildconfig.java' exclude '**/r.java' } task("bundle${variant.name.capitalize()}javadoc", type: jar) { basename = "compass api - ($version)" description "bundles javadoc zip $variant.name." classifier = "javadoc" tasks["generate${variant.name.capitalize()}javadoc"] } }
the configuration above adds javadoc generation task each buildvariant of subproject. @ point can can generate javadoc each module separately typing
gradle :myrootproject:mysubproject:generatedebugjavadoc gradle :myrootproject:mysubproject:generatereleasejavadoc gradle :myrootproject:mysubproject:generatemyfancyflavourdebugjavadoc gradle :myrootproject:mysubproject:generatemyfancyflavourreleasejavadoc if use jre 8 following configuration disables errors raised doclint during javadoc build (explanation in greater detail here)
if (javaversion.current().isjava8compatible()) { tasks.withtype(javadoc) { // disable crazy super-strict doclint tool in java 8 //noinspection spellcheckinginspection options.addstringoption('xdoclint:none', '-quiet') } } to aggregate javadocs of each submodules single 1 create plugin in
build.gradleadd task submodule partial javadoc generation of interested in:class javadocaggregationplugin implements plugin<project> { static final string aggregate_javadocs_task_name = 'aggregatejavadocs' @override void apply(project project) { project rootproject = project.rootproject rootproject.gradle.projectsevaluated { set<project> librarysubprojects = getlibraryprojects(rootproject) if (!librarysubprojects.isempty()) { rootproject.task(aggregate_javadocs_task_name, type: javadoc) { description = 'aggregates javadoc api documentation of subprojects.' group = javabaseplugin.documentation_group dependson librarysubprojects.generatereleasejavadoc //please note generatereleasejavadoc name of separate javadoc generation task in each library module source librarysubprojects.generatereleasejavadoc.source destinationdir rootproject.file("$rootproject.builddir/docs/javadoc") //javadoc destination directory classpath = rootproject.files(librarysubprojects.generatereleasejavadoc.classpath) } } } } private set<project> getlibraryprojects(project rootproject) { rootproject.subprojects.findall { subproject -> subproject.plugins.findplugin("com.android.library") } //in case every library module selected } }
finally, include plugin gradle configuration in project's build.gradle below plugin definition.
apply plugin: javadocaggregationplugin by doing , rebuilding gradle's configuration should able create aggregated javadoc in specified directory typing following command via cli:
gradle aggregatejavadocs
hope helps somehow.
helpful link: android gradle dsl
Comments
Post a Comment