Public apidocs

- Publishing as zip which will get handled by artifactory
- Relates #165
This commit is contained in:
Janne Valkealahti
2023-04-25 08:04:19 +01:00
parent 41f26df8fd
commit 91c5626a46
2 changed files with 57 additions and 5 deletions

View File

@@ -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);

View File

@@ -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;
}
}