2525import org .gradle .api .artifacts .ExternalModuleDependency ;
2626import org .gradle .api .artifacts .ProjectDependency ;
2727import org .gradle .api .file .FileCollection ;
28+ import org .gradle .api .java .archives .Attributes ;
2829import org .gradle .api .plugins .BasePlugin ;
2930import org .gradle .api .plugins .JavaPlugin ;
3031import org .gradle .api .provider .Property ;
@@ -212,14 +213,15 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
212213 QuarkusGenerateCode .class , LaunchMode .NORMAL , SourceSet .MAIN_SOURCE_SET_NAME ,
213214 quarkusExt .getCodeGenerationInputs ().get ());
214215 quarkusGenerateCode .configure (task -> configureGenerateCodeTask (task , quarkusGenerateAppModelTask ,
215- QuarkusGenerateCode .QUARKUS_GENERATED_SOURCES ));
216+ QuarkusGenerateCode .QUARKUS_GENERATED_SOURCES , quarkusExt ));
216217 // quarkusGenerateCodeDev
217218 TaskProvider <QuarkusGenerateCode > quarkusGenerateCodeDev = tasks .register (QUARKUS_GENERATE_CODE_DEV_TASK_NAME ,
218219 QuarkusGenerateCode .class , LaunchMode .DEVELOPMENT , SourceSet .MAIN_SOURCE_SET_NAME ,
219220 quarkusExt .getCodeGenerationInputs ().get ());
220221 quarkusGenerateCodeDev .configure (task -> {
221222 task .dependsOn (quarkusGenerateCode );
222- configureGenerateCodeTask (task , quarkusGenerateDevAppModelTask , QuarkusGenerateCode .QUARKUS_GENERATED_SOURCES );
223+ configureGenerateCodeTask (task , quarkusGenerateDevAppModelTask , QuarkusGenerateCode .QUARKUS_GENERATED_SOURCES ,
224+ quarkusExt );
223225 });
224226 // quarkusGenerateCodeTests
225227 TaskProvider <QuarkusGenerateCode > quarkusGenerateCodeTests = tasks .register (QUARKUS_GENERATE_CODE_TESTS_TASK_NAME ,
@@ -228,7 +230,7 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
228230 quarkusGenerateCodeTests .configure (task -> {
229231 task .dependsOn ("compileQuarkusTestGeneratedSourcesJava" );
230232 configureGenerateCodeTask (task , quarkusGenerateTestAppModelTask ,
231- QuarkusGenerateCode .QUARKUS_TEST_GENERATED_SOURCES );
233+ QuarkusGenerateCode .QUARKUS_TEST_GENERATED_SOURCES , quarkusExt );
232234 });
233235
234236 TaskProvider <QuarkusApplicationModelTask > quarkusBuildAppModelTask = tasks .register ("quarkusBuildAppModel" ,
@@ -240,14 +242,14 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
240242 });
241243 tasks .register (QUARKUS_SHOW_EFFECTIVE_CONFIG_TASK_NAME ,
242244 QuarkusShowEffectiveConfig .class , task -> {
243- configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider );
245+ configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider , quarkusExt );
244246 task .setDescription ("Show effective Quarkus build configuration." );
245247 });
246248
247249 TaskProvider <QuarkusBuildDependencies > quarkusBuildDependencies = tasks .register (QUARKUS_BUILD_DEP_TASK_NAME ,
248250 QuarkusBuildDependencies .class ,
249251 task -> {
250- configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider );
252+ configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider , quarkusExt );
251253 task .getOutputs ().doNotCacheIf ("Dependencies are never cached" , t -> true );
252254 });
253255 project .afterEvaluate (evaluated -> addDependencyOnJandexIfConfigured (evaluated , quarkusBuildDependencies ));
@@ -257,7 +259,7 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
257259 TaskProvider <QuarkusBuildCacheableAppParts > quarkusBuildCacheableAppParts = tasks .register (
258260 QUARKUS_BUILD_APP_PARTS_TASK_NAME ,
259261 QuarkusBuildCacheableAppParts .class , task -> {
260- configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider );
262+ configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider , quarkusExt );
261263 task .dependsOn (quarkusGenerateCode );
262264 task .getOutputs ().doNotCacheIf (
263265 "Not adding uber-jars, native binaries and mutable-jar package type to Gradle " +
@@ -273,7 +275,7 @@ public boolean isSatisfiedBy(Task t) {
273275 });
274276
275277 TaskProvider <QuarkusBuild > quarkusBuild = tasks .register (QUARKUS_BUILD_TASK_NAME , QuarkusBuild .class , build -> {
276- configureQuarkusBuildTask (project , build , quarkusBuildAppModelTask , serviceProvider );
278+ configureQuarkusBuildTask (project , build , quarkusBuildAppModelTask , serviceProvider , quarkusExt );
277279 build .dependsOn (quarkusBuildDependencies , quarkusBuildCacheableAppParts );
278280 build .getOutputs ().doNotCacheIf (
279281 "Only collects and combines the outputs of " + QUARKUS_BUILD_APP_PARTS_TASK_NAME + " and "
@@ -297,28 +299,28 @@ public boolean isSatisfiedBy(Task t) {
297299
298300 tasks .register (IMAGE_BUILD_TASK_NAME , ImageBuild .class , task -> {
299301 task .dependsOn (quarkusRequiredExtension );
300- configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider );
302+ configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider , quarkusExt );
301303 task .getBuilderName ().set (quarkusRequiredExtension .flatMap (ImageCheckRequirementsTask ::getOutputFile ));
302304 task .finalizedBy (quarkusBuild );
303305 });
304306
305307 tasks .register (IMAGE_PUSH_TASK_NAME , ImagePush .class , task -> {
306308 task .dependsOn (quarkusRequiredExtension );
307- configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider );
309+ configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider , quarkusExt );
308310 task .getBuilderName ().set (quarkusRequiredExtension .flatMap (ImageCheckRequirementsTask ::getOutputFile ));
309311 task .finalizedBy (quarkusBuild );
310312 });
311313
312314 tasks .register (DEPLOY_TASK_NAME , Deploy .class , task -> {
313- configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider );
315+ configureQuarkusBuildTask (project , task , quarkusBuildAppModelTask , serviceProvider , quarkusExt );
314316 task .finalizedBy (quarkusBuild );
315317 });
316318
317319 TaskProvider <QuarkusDev > quarkusDev = tasks .register (QUARKUS_DEV_TASK_NAME , QuarkusDev .class , devRuntimeDependencies ,
318320 quarkusExt );
319321 TaskProvider <QuarkusRun > quarkusRun = tasks .register (QUARKUS_RUN_TASK_NAME , QuarkusRun .class ,
320322 build -> {
321- configureQuarkusBuildTask (project , build , quarkusBuildAppModelTask , serviceProvider );
323+ configureQuarkusBuildTask (project , build , quarkusBuildAppModelTask , serviceProvider , quarkusExt );
322324 build .dependsOn (quarkusBuild );
323325
324326 });
@@ -471,7 +473,11 @@ public boolean isSatisfiedBy(Task t) {
471473 quarkusGenerateTestAppModelTask .flatMap (QuarkusApplicationModelTask ::getApplicationModel ),
472474 quarkusBuild .map (QuarkusBuild ::getNativeRunner ),
473475 mainSourceSet .getOutput ().getClassesDirs (),
474- project .getObjects ().newInstance (QuarkusPluginExtensionView .class , quarkusExt )));
476+ project .getObjects ().newInstance (QuarkusPluginExtensionView .class , quarkusExt ),
477+ project .getObjects ().mapProperty (String .class , Object .class )
478+ .convention (quarkusExt .manifest ().getAttributes ()),
479+ project .getObjects ().mapProperty (String .class , Attributes .class )
480+ .convention (quarkusExt .getAttributes ())));
475481
476482 // also make each task use the JUnit platform since it's the only supported test environment
477483 t .useJUnitPlatform ();
@@ -523,18 +529,35 @@ private static void configureApplicationModelTask(Project project, QuarkusApplic
523529
524530 private static void configureQuarkusBuildTask (Project project , QuarkusBuildTask task ,
525531 TaskProvider <QuarkusApplicationModelTask > quarkusGenerateAppModelTask ,
526- Provider <ForcedPropertieBuildService > serviceProvider ) {
532+ Provider <ForcedPropertieBuildService > serviceProvider ,
533+ QuarkusPluginExtension quarkusExt ) {
527534 task .getApplicationModel ().set (quarkusGenerateAppModelTask .flatMap (QuarkusApplicationModelTask ::getApplicationModel ));
528535 SourceSet mainSourceSet = getSourceSet (project , SourceSet .MAIN_SOURCE_SET_NAME );
529536 task .getAdditionalForcedProperties ().set (serviceProvider );
530537 task .usesService (serviceProvider );
531538 task .setCompileClasspath (mainSourceSet .getCompileClasspath ().plus (mainSourceSet .getRuntimeClasspath ())
532539 .plus (mainSourceSet .getAnnotationProcessorPath ())
533540 .plus (mainSourceSet .getResources ()));
541+ task .getCachingRelevantInput ().set (quarkusExt
542+ .cachingRelevantProperties (quarkusExt .getCachingRelevantProperties ().get ()));
543+ task .getJarEnabled ().set (quarkusExt .packageConfig ().jar ().enabled ());
544+ task .getNativeEnabled ().set (quarkusExt .nativeConfig ().enabled ());
545+ task .getNativeSourcesOnly ().set (quarkusExt .nativeConfig ().sourcesOnly ());
546+ task .getRunnerSuffix ().set (quarkusExt .packageConfig ().computedRunnerSuffix ());
547+ task .getRunnerName ().set (
548+ quarkusExt .packageConfig ().outputName ().orElseGet (quarkusExt ::finalName ));
549+ task .getOutputDirectory ()
550+ .set (Path .of (quarkusExt .packageConfig ().outputDirectory ().map (Path ::toString )
551+ .orElse (QuarkusPlugin .DEFAULT_OUTPUT_DIRECTORY )));
552+ task .getJarType ().set (quarkusExt .packageConfig ().jar ().type ());
553+ task .getManifestAttributes ().set (quarkusExt .manifest ().getAttributes ());
554+ task .getManifestSections ().set (quarkusExt .manifest ().getSections ());
555+
534556 }
535557
536558 private static void configureGenerateCodeTask (QuarkusGenerateCode task ,
537- TaskProvider <QuarkusApplicationModelTask > applicationModelTaskTaskProvider , String generateSourcesDir ) {
559+ TaskProvider <QuarkusApplicationModelTask > applicationModelTaskTaskProvider , String generateSourcesDir ,
560+ QuarkusPluginExtension quarkusExt ) {
538561 SourceSet generatedSources = getSourceSet (task .getProject (), generateSourcesDir );
539562 Set <File > sourceSetOutput = generatedSources .getOutput ().filter (f -> f .getName ().equals (generateSourcesDir )).getFiles ();
540563 if (sourceSetOutput .isEmpty ()) {
@@ -544,6 +567,10 @@ private static void configureGenerateCodeTask(QuarkusGenerateCode task,
544567 task .getApplicationModel ()
545568 .set (applicationModelTaskTaskProvider .flatMap (QuarkusApplicationModelTask ::getApplicationModel ));
546569 task .getGeneratedOutputDirectory ().set (generatedSources .getJava ().getClassesDirectory ());
570+ task .getCachingRelevantInput ()
571+ .set (quarkusExt .cachingRelevantProperties (quarkusExt .getCachingRelevantProperties ().get ()));
572+ task .getManifestAttributes ().set (quarkusExt .manifest ().getAttributes ());
573+ task .getManifestSections ().set (quarkusExt .manifest ().getSections ());
547574 }
548575
549576 private void createSourceSets (Project project ) {
0 commit comments