diff --git a/buildSrc/src/main/groovy/package-list.groovy b/buildSrc/src/main/groovy/package-list.groovy new file mode 100644 index 000000000..5f8d7e8ef --- /dev/null +++ b/buildSrc/src/main/groovy/package-list.groovy @@ -0,0 +1,28 @@ +import org.gradle.api.tasks.* + + +//////////////////////////////////////////////////////////////////////// +// +// create a Javadoc-style "package-list" file +// + +class CreatePackageList extends org.gradle.api.DefaultTask { + + @Input Object sourceSet + @OutputFile File packageList = new File("$temporaryDir/package-list") + + @TaskAction + def create() { + sourceSet.sourceCollections.collect { collection -> + def sourceRoot = collection.tree.dir.toPath() + collection.collect { source -> + def javaSourceFilePath = source.toPath() + def parentPath = javaSourceFilePath.parent + def relativePath = sourceRoot.relativize(parentPath) + relativePath.toString().replace(File.separator, '.') + } + }.flatten().sort().unique().each { + packageList << "$it\n" + } + } +} diff --git a/com.ibm.wala.cast.js/build.gradle b/com.ibm.wala.cast.js/build.gradle index b1bd6091b..1424ad156 100644 --- a/com.ibm.wala.cast.js/build.gradle +++ b/com.ibm.wala.cast.js/build.gradle @@ -14,6 +14,10 @@ dependencies { ) } +task createPackageList(type: CreatePackageList) { + sourceSet sourceSets.main.java +} + javadoc { def rhino = project(':com.ibm.wala.cast.js.rhino').compileJava dependsOn rhino diff --git a/com.ibm.wala.cast/build.gradle b/com.ibm.wala.cast/build.gradle index 2f3dab2ba..f1c76b26a 100644 --- a/com.ibm.wala.cast/build.gradle +++ b/com.ibm.wala.cast/build.gradle @@ -16,16 +16,16 @@ dependencies { javadoc { def js = ':com.ibm.wala.cast.js' + evaluationDependsOn(js) + dependsOn "$js:compileJava" + js = project(js) doFirst { - classpath += files project(js).compileJava + classpath += files js.compileJava } - /* - // creates circular dependency - def jsDoc = project(js).javadoc - dependsOn jsDoc - options.links jsDoc.outputDirectory.path - */ + + dependsOn js.createPackageList + options.linksOffline js.javadoc.outputDirectory.path, files(js.createPackageList).singleFile.parent } def currentJavaHome = org.gradle.internal.jvm.Jvm.current().javaHome diff --git a/com.ibm.wala.dalvik/build.gradle b/com.ibm.wala.dalvik/build.gradle index eb827159c..ad57cafc4 100644 --- a/com.ibm.wala.dalvik/build.gradle +++ b/com.ibm.wala.dalvik/build.gradle @@ -10,3 +10,12 @@ dependencies { project(':com.ibm.wala.util'), ) } + +task createPackageList(type: CreatePackageList) { + sourceSet sourceSets.main.java +} + +javadoc { + dependsOn createPackageList + options.linksOffline outputDirectory.path, files(createPackageList).singleFile.parent +}