1515package org .eclipse .edc .plugins .edcbuild .conventions ;
1616
1717import io .swagger .v3 .plugins .gradle .tasks .ResolveTask ;
18- import org .eclipse .edc .plugins .edcbuild .Versions ;
1918import org .eclipse .edc .plugins .edcbuild .extensions .BuildExtension ;
2019import org .eclipse .edc .plugins .edcbuild .tasks .PrintApiGroupTask ;
2120import org .gradle .api .Project ;
21+ import org .gradle .api .file .FileCollection ;
2222import org .gradle .api .plugins .JavaPluginExtension ;
23+ import org .jspecify .annotations .NonNull ;
2324
2425import java .nio .file .Path ;
25- import java .util .Map ;
2626import java .util .stream .Stream ;
2727
28+ import static org .eclipse .edc .plugins .edcbuild .Versions .JAKARTA_WS_RS ;
29+ import static org .eclipse .edc .plugins .edcbuild .Versions .SWAGGER ;
2830import static org .eclipse .edc .plugins .edcbuild .conventions .ConventionFunctions .requireExtension ;
29- import static org .eclipse .edc .plugins .edcbuild .conventions .SwaggerConvention .defaultOutputDirectory ;
3031import static org .gradle .api .plugins .JavaPlugin .IMPLEMENTATION_CONFIGURATION_NAME ;
3132
3233/**
@@ -37,46 +38,48 @@ class SwaggerResolveConvention implements EdcConvention {
3738 private static final String DEFAULT_API_GROUP = "" ;
3839 public static final String SWAGGER_GRADLE_PLUGIN = "io.swagger.core.v3.swagger-gradle-plugin" ;
3940
41+ public static Path defaultOutputDirectory (Project project ) {
42+ return Path .of (project .getRootProject ().getProjectDir ().getAbsolutePath (), "resources/openapi/yaml" );
43+ }
44+
4045 @ Override
4146 public void apply (Project target ) {
4247 target .getPluginManager ().withPlugin (SWAGGER_GRADLE_PLUGIN , appliedPlugin -> {
4348
4449 target .getTasks ().register ("apiGroups" , PrintApiGroupTask .class );
4550
4651 Stream .of (
47- "io.swagger.core.v3:swagger-jaxrs2-jakarta:%s" .formatted (Versions . SWAGGER ),
48- "jakarta.ws.rs:jakarta.ws.rs-api:%s" .formatted (Versions . JAKARTA_WS_RS )
52+ "io.swagger.core.v3:swagger-jaxrs2-jakarta:%s" .formatted (SWAGGER ),
53+ "jakarta.ws.rs:jakarta.ws.rs-api:%s" .formatted (JAKARTA_WS_RS )
4954 ).forEach (dependency -> target .getDependencies ().add (IMPLEMENTATION_CONFIGURATION_NAME , dependency ));
5055
51- var classpath = requireExtension (target , JavaPluginExtension .class )
52- .getSourceSets ().getAt ("main" ).getRuntimeClasspath ();
5356 var swaggerExt = requireExtension (target , BuildExtension .class ).getSwagger ();
5457
5558 var resourcePkgs = swaggerExt .getResourcePackages (); // already provides the default
5659
57- target .getTasks ().withType (ResolveTask .class , task -> {
60+ target .getTasks ().withType (ResolveTask .class ). configureEach ( task -> {
5861 var outputFileName = swaggerExt .getOutputFilename ().getOrElse (target .getName ());
5962 var fallbackOutputDir = defaultOutputDirectory (target );
6063 var apiGroup = swaggerExt .getApiGroup ().getOrElse (DEFAULT_API_GROUP );
6164
6265 var outputDir = Path .of (swaggerExt .getOutputDirectory ().getOrElse (fallbackOutputDir .toFile ()).toURI ())
6366 .resolve (apiGroup )
64- .toFile ();
67+ .toString ();
6568
6669 task .setOutputFileName (outputFileName );
6770 task .setOutputDir (outputDir );
6871 task .setOutputFormat (ResolveTask .Format .YAML );
6972 task .setSortOutput (true );
7073 task .setPrettyPrint (true );
71- task .setClasspath (classpath );
74+ task .setClasspath (getClasspath ( target ) );
7275 task .setBuildClasspath (task .getClasspath ());
7376 task .setResourcePackages (resourcePkgs );
7477 });
7578
7679 target .getTasks ().register ("openapi" , ResolveTask .class ).configure (task -> {
7780 var outputDir = target .getLayout ().getBuildDirectory ().getAsFile ().get ().toPath ()
7881 .resolve ("docs" ).resolve ("openapi" )
79- .toFile ();
82+ .toString ();
8083
8184 target .getTasks ().findByName ("jar" ).dependsOn (task );
8285 task .setGroup ("documentation" );
@@ -86,13 +89,16 @@ public void apply(Project target) {
8689 task .setOutputFormat (ResolveTask .Format .YAML );
8790 task .setSortOutput (true );
8891 task .setPrettyPrint (true );
89- task .setClasspath (classpath );
92+ task .setClasspath (getClasspath ( target ) );
9093 task .setBuildClasspath (task .getClasspath ());
9194 task .setResourcePackages (resourcePkgs );
9295 });
9396
94- target .getConfigurations ().all (c -> c .exclude (Map .of ("group" , "com.fasterxml.jackson.jaxrs" ,
95- "module" , "jackson-jaxrs-json-provider" )));
9697 });
9798 }
99+
100+ private static @ NonNull FileCollection getClasspath (Project target ) {
101+ return requireExtension (target , JavaPluginExtension .class )
102+ .getSourceSets ().getAt ("main" ).getRuntimeClasspath ();
103+ }
98104}
0 commit comments