Skip to content

Commit 91c5626

Browse files
committed
Public apidocs
- Publishing as zip which will get handled by artifactory - Relates #165
1 parent 41f26df commit 91c5626

File tree

2 files changed

+57
-5
lines changed

2 files changed

+57
-5
lines changed

buildSrc/src/main/java/org/springframework/security/kerberos/gradle/ArtifactoryConventions.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,7 @@ void apply(Project project) {
7070
aTask.setCiServerBuild();
7171
// bom is not a java project so plugin doesn't
7272
// add defaults for publications.
73-
aTask.publications("mavenJava");
74-
// aTask.publishConfigs("archives");
75-
aTask.setPublishIvy(false);
73+
aTask.publications("mavenJava", "docs");
7674

7775
// plugin is difficult to work with, use this hack
7876
// to set props before task does its real work
@@ -86,8 +84,8 @@ void apply(Project project) {
8684
propsMap.put("zip.type", "docs");
8785
ArtifactSpec spec = ArtifactSpec.builder()
8886
.artifactNotation("*:*:*:*@zip")
89-
// archives is manually set for zip in root plugin
90-
.configuration("archives")
87+
// docs is manually set for zip in root plugin
88+
.configuration("docs")
9189
.properties(propsMap)
9290
.build();
9391
artifactSpecs.add(spec);

buildSrc/src/main/java/org/springframework/security/kerberos/gradle/RootPlugin.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,19 @@
1515
*/
1616
package org.springframework.security.kerberos.gradle;
1717

18+
import java.io.File;
19+
1820
import org.gradle.api.Plugin;
1921
import org.gradle.api.Project;
22+
import org.gradle.api.plugins.JavaPluginConvention;
2023
import org.gradle.api.plugins.PluginManager;
24+
import org.gradle.api.publish.PublishingExtension;
25+
import org.gradle.api.publish.maven.MavenPublication;
2126
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
27+
import org.gradle.api.tasks.SourceSet;
28+
import org.gradle.api.tasks.bundling.Zip;
29+
import org.gradle.api.tasks.javadoc.Javadoc;
30+
import org.gradle.external.javadoc.CoreJavadocOptions;
2231

2332
/**
2433
* Manages tasks creating zip file for docs and publishing it.
@@ -32,6 +41,51 @@ public void apply(Project project) {
3241
PluginManager pluginManager = project.getPluginManager();
3342
pluginManager.apply(MavenPublishPlugin.class);
3443
pluginManager.apply(SpringNexusPublishPlugin.class);
44+
pluginManager.apply(PublishLocalPlugin.class);
45+
Javadoc apiTask = createApiTask(project);
46+
Zip zipTask = createZipTask(project);
47+
zipTask.dependsOn(apiTask);
3548
new ArtifactoryConventions().apply(project);
3649
}
50+
51+
private Zip createZipTask(Project project) {
52+
Zip zipTask = project.getTasks().create("distZip", Zip.class, zip -> {
53+
zip.setGroup("Distribution");
54+
zip.from("build/api", copy -> {
55+
copy.into("api");
56+
});
57+
});
58+
59+
PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class);
60+
MavenPublication mavenPublication = publishing.getPublications().create("docs", MavenPublication.class);
61+
mavenPublication.artifact(zipTask);
62+
return zipTask;
63+
}
64+
65+
private Javadoc createApiTask(Project project) {
66+
Javadoc api = project.getTasks().create("api", Javadoc.class, a -> {
67+
a.setGroup("Documentation");
68+
a.setDescription("Generates aggregated Javadoc API documentation.");
69+
a.setDestinationDir(new File(project.getBuildDir(), "api"));
70+
CoreJavadocOptions options = (CoreJavadocOptions) a.getOptions();
71+
options.source("17");
72+
options.encoding("UTF-8");
73+
options.addStringOption("Xdoclint:none", "-quiet");
74+
});
75+
76+
project.getRootProject().getSubprojects().forEach(p -> {
77+
p.getPlugins().withType(ModulePlugin.class, m -> {
78+
JavaPluginConvention java = p.getConvention().getPlugin(JavaPluginConvention.class);
79+
SourceSet mainSourceSet = java.getSourceSets().getByName("main");
80+
81+
api.setSource(api.getSource().plus(mainSourceSet.getAllJava()));
82+
83+
p.getTasks().withType(Javadoc.class, j -> {
84+
api.setClasspath(api.getClasspath().plus(j.getClasspath()));
85+
});
86+
});
87+
});
88+
return api;
89+
}
90+
3791
}

0 commit comments

Comments
 (0)