1515 */
1616package org .springframework .security .kerberos .gradle ;
1717
18+ import java .io .File ;
19+
1820import org .gradle .api .Plugin ;
1921import org .gradle .api .Project ;
22+ import org .gradle .api .plugins .JavaPluginConvention ;
2023import org .gradle .api .plugins .PluginManager ;
24+ import org .gradle .api .publish .PublishingExtension ;
25+ import org .gradle .api .publish .maven .MavenPublication ;
2126import 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