@@ -339,6 +339,45 @@ void nativeApp() throws Exception {
339
339
}
340
340
}
341
341
342
+ @ Test
343
+ void classDataSharingApp () throws Exception {
344
+ writeMainClass ();
345
+ String imageName = "paketo-integration/" + this .gradleBuild .getProjectDir ().getName ();
346
+ ImageReference imageReference = ImageReference .of (ImageName .of (imageName ));
347
+ BuildResult result = buildImage (imageName );
348
+ assertThat (result .task (":bootBuildImage" ).getOutcome ()).isEqualTo (TaskOutcome .SUCCESS );
349
+ assertThat (result .getOutput ()).contains ("Running creator" );
350
+ try (GenericContainer <?> container = new GenericContainer <>(imageName )) {
351
+ container .withExposedPorts (8080 );
352
+ container .waitingFor (Wait .forHttp ("/test" )).start ();
353
+ ContainerConfig config = container .getContainerInfo ().getConfig ();
354
+ assertLabelsMatchManifestAttributes (config );
355
+ ImageAssertions .assertThat (config ).buildMetadata ((metadata ) -> {
356
+ metadata .buildpacks ()
357
+ .contains ("paketo-buildpacks/ca-certificates" , "paketo-buildpacks/bellsoft-liberica" ,
358
+ "paketo-buildpacks/executable-jar" , "paketo-buildpacks/dist-zip" ,
359
+ "paketo-buildpacks/spring-boot" );
360
+ metadata .processOfType ("web" )
361
+ .satisfiesExactly ((command ) -> assertThat (command ).isEqualTo ("java" ),
362
+ (arg ) -> assertThat (arg ).isEqualTo ("-cp" ),
363
+ (arg ) -> assertThat (arg ).startsWith ("runner.jar" ),
364
+ (arg ) -> assertThat (arg ).isEqualTo ("example.ExampleApplication" ));
365
+ metadata .processOfType ("spring-boot-app" )
366
+ .satisfiesExactly ((command ) -> assertThat (command ).isEqualTo ("java" ),
367
+ (arg ) -> assertThat (arg ).isEqualTo ("-cp" ),
368
+ (arg ) -> assertThat (arg ).startsWith ("runner.jar" ),
369
+ (arg ) -> assertThat (arg ).isEqualTo ("example.ExampleApplication" ));
370
+ metadata .processOfType ("executable-jar" )
371
+ .containsExactly ("java" , "org.springframework.boot.loader.launch.JarLauncher" );
372
+ });
373
+ assertImageHasJvmSbomLayer (imageReference , config );
374
+ assertImageHasDependenciesSbomLayer (imageReference , config , "executable-jar" );
375
+ }
376
+ finally {
377
+ removeImage (imageReference );
378
+ }
379
+ }
380
+
342
381
private BuildResult buildImage (String imageName , String ... arguments ) {
343
382
List <String > args = new ArrayList <>(List .of (arguments ));
344
383
args .add ("bootBuildImage" );
0 commit comments