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