2020import org .eclipse .edc .plugins .autodoc .tasks .MarkdownRendererTask .ToMarkdown ;
2121import org .eclipse .edc .plugins .autodoc .tasks .MergeManifestsTask ;
2222import org .eclipse .edc .plugins .autodoc .tasks .ResolveManifestTask ;
23+ import org .gradle .api .GradleException ;
2324import org .gradle .api .Plugin ;
2425import org .gradle .api .Project ;
26+ import org .gradle .api .publish .PublishingExtension ;
27+ import org .gradle .api .publish .maven .MavenPublication ;
2528
2629import java .util .List ;
2730
31+ import static java .util .Optional .ofNullable ;
32+
2833/**
2934 * Gradle plugin that injects an {@code annotationProcessor} dependency to any Gradle project so that the autodoc processor can run during compile.
3035 */
3136public class AutodocPlugin implements Plugin <Project > {
3237
3338 public static final String GROUP_NAME = "autodoc" ;
3439 public static final String AUTODOC_TASK_NAME = "autodoc" ;
35- private final List <String > exclusions = List .of ("version-catalog" , "edc-build" , "module-names" , "openapi-merger" , "test-summary" , " autodoc-plugin" , "autodoc-processor" , "autodoc-converters" );
40+ private final List <String > exclusions = List .of ("version-catalog" , "edc-build" , "autodoc-plugin" , "autodoc-processor" , "autodoc-converters" );
3641
3742 @ Override
3843 public void apply (Project project ) {
@@ -58,5 +63,34 @@ public void apply(Project project) {
5863 t .setDescription (AutodocBomTask .DESCRIPTION );
5964 t .setGroup (GROUP_NAME );
6065 });
66+
67+ project .afterEvaluate (p -> {
68+ var manifestFile = p .getLayout ().getBuildDirectory ().file ("edc.json" );
69+
70+ if (!manifestFile .isPresent ()) {
71+ return ;
72+ }
73+
74+ publishingExtension (project ).getPublications ().stream ()
75+ .filter (MavenPublication .class ::isInstance )
76+ .map (MavenPublication .class ::cast )
77+ .map (MavenPublication ::getArtifacts )
78+ .forEach (artifacts -> {
79+ var manifestArtifact = p .getArtifacts ().add ("archives" , manifestFile , artifact -> {
80+ artifact .builtBy (AUTODOC_TASK_NAME );
81+ artifact .setClassifier ("manifest" );
82+ artifact .setType ("json" );
83+ });
84+
85+ artifacts .artifact (manifestArtifact );
86+ });
87+ });
88+
6189 }
90+
91+ private static PublishingExtension publishingExtension (Project target ) {
92+ return ofNullable (target .getExtensions ().findByType (PublishingExtension .class ))
93+ .orElseThrow (() -> new GradleException (PublishingExtension .class .getSimpleName () + " expected but was null" ));
94+ }
95+
6296}
0 commit comments