Public apidocs
- Publishing as zip which will get handled by artifactory - Relates #165
This commit is contained in:
@@ -70,9 +70,7 @@ public class ArtifactoryConventions {
|
||||
aTask.setCiServerBuild();
|
||||
// bom is not a java project so plugin doesn't
|
||||
// add defaults for publications.
|
||||
aTask.publications("mavenJava");
|
||||
// aTask.publishConfigs("archives");
|
||||
aTask.setPublishIvy(false);
|
||||
aTask.publications("mavenJava", "docs");
|
||||
|
||||
// plugin is difficult to work with, use this hack
|
||||
// to set props before task does its real work
|
||||
@@ -86,8 +84,8 @@ public class ArtifactoryConventions {
|
||||
propsMap.put("zip.type", "docs");
|
||||
ArtifactSpec spec = ArtifactSpec.builder()
|
||||
.artifactNotation("*:*:*:*@zip")
|
||||
// archives is manually set for zip in root plugin
|
||||
.configuration("archives")
|
||||
// docs is manually set for zip in root plugin
|
||||
.configuration("docs")
|
||||
.properties(propsMap)
|
||||
.build();
|
||||
artifactSpecs.add(spec);
|
||||
|
||||
@@ -15,10 +15,19 @@
|
||||
*/
|
||||
package org.springframework.security.kerberos.gradle;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.gradle.api.Plugin;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.plugins.JavaPluginConvention;
|
||||
import org.gradle.api.plugins.PluginManager;
|
||||
import org.gradle.api.publish.PublishingExtension;
|
||||
import org.gradle.api.publish.maven.MavenPublication;
|
||||
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
|
||||
import org.gradle.api.tasks.SourceSet;
|
||||
import org.gradle.api.tasks.bundling.Zip;
|
||||
import org.gradle.api.tasks.javadoc.Javadoc;
|
||||
import org.gradle.external.javadoc.CoreJavadocOptions;
|
||||
|
||||
/**
|
||||
* Manages tasks creating zip file for docs and publishing it.
|
||||
@@ -32,6 +41,51 @@ class RootPlugin implements Plugin<Project> {
|
||||
PluginManager pluginManager = project.getPluginManager();
|
||||
pluginManager.apply(MavenPublishPlugin.class);
|
||||
pluginManager.apply(SpringNexusPublishPlugin.class);
|
||||
pluginManager.apply(PublishLocalPlugin.class);
|
||||
Javadoc apiTask = createApiTask(project);
|
||||
Zip zipTask = createZipTask(project);
|
||||
zipTask.dependsOn(apiTask);
|
||||
new ArtifactoryConventions().apply(project);
|
||||
}
|
||||
|
||||
private Zip createZipTask(Project project) {
|
||||
Zip zipTask = project.getTasks().create("distZip", Zip.class, zip -> {
|
||||
zip.setGroup("Distribution");
|
||||
zip.from("build/api", copy -> {
|
||||
copy.into("api");
|
||||
});
|
||||
});
|
||||
|
||||
PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class);
|
||||
MavenPublication mavenPublication = publishing.getPublications().create("docs", MavenPublication.class);
|
||||
mavenPublication.artifact(zipTask);
|
||||
return zipTask;
|
||||
}
|
||||
|
||||
private Javadoc createApiTask(Project project) {
|
||||
Javadoc api = project.getTasks().create("api", Javadoc.class, a -> {
|
||||
a.setGroup("Documentation");
|
||||
a.setDescription("Generates aggregated Javadoc API documentation.");
|
||||
a.setDestinationDir(new File(project.getBuildDir(), "api"));
|
||||
CoreJavadocOptions options = (CoreJavadocOptions) a.getOptions();
|
||||
options.source("17");
|
||||
options.encoding("UTF-8");
|
||||
options.addStringOption("Xdoclint:none", "-quiet");
|
||||
});
|
||||
|
||||
project.getRootProject().getSubprojects().forEach(p -> {
|
||||
p.getPlugins().withType(ModulePlugin.class, m -> {
|
||||
JavaPluginConvention java = p.getConvention().getPlugin(JavaPluginConvention.class);
|
||||
SourceSet mainSourceSet = java.getSourceSets().getByName("main");
|
||||
|
||||
api.setSource(api.getSource().plus(mainSourceSet.getAllJava()));
|
||||
|
||||
p.getTasks().withType(Javadoc.class, j -> {
|
||||
api.setClasspath(api.getClasspath().plus(j.getClasspath()));
|
||||
});
|
||||
});
|
||||
});
|
||||
return api;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user