Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gradle 3.16 fails with missing required property additionalForcedProperties #44367

Closed
kdubb opened this issue Nov 7, 2024 · 15 comments · Fixed by #44399
Closed

Gradle 3.16 fails with missing required property additionalForcedProperties #44367

kdubb opened this issue Nov 7, 2024 · 15 comments · Fixed by #44399
Milestone

Comments

@kdubb
Copy link
Contributor

kdubb commented Nov 7, 2024

Describe the bug

Upgrading to 3.16.1 gives me a Gradle plugin error when attempting to build images (using Jib). The error seems to be an interaction with other plugins (specifically a code generation plugin). Although I have no idea what the issue actually is, and the same project worked in many previous versions of Quarkus.

Note that we have a pretty complex Gradle multi-module project. I have created a reproducer that captures that complexity.

Expected behavior

Gradle builds images as it did in 3.15 and previous

Actual behavior

Building images fails with:

FAILURE: Build failed with an exception.
* What went wrong:
A problem was found with the configuration of task ':data-service:quarkusAppPartsBuild' (type 'QuarkusBuildCacheableAppParts').
  - In plugin 'io.quarkus' type 'io.quarkus.gradle.tasks.QuarkusBuildCacheableAppParts' property 'additionalForcedProperties' doesn't have a configured value.

    Reason: This property isn't marked as optional and no value has been configured.

    Possible solutions:
      1. Assign a value to 'additionalForcedProperties'.
      2. Mark property 'additionalForcedProperties' as optional.

    For more information, please refer to https://docs.gradle.org/8.9/userguide/validation_problems.htm

How to Reproduce?

quarkus-complex-project.zip

Run ./gradlew -Dquarkus.container-image.build=true build to see the error.

The plugin sundayGenerator (see plugins section of gradle/libs.versions.toml) is what causes the failure once added (does not even need to be configured to do any code generation).

I've recreated a basic version of that plugin @ buildSrc/src/main/kotlin/Zerox.gradle.kts. It does all the same steps but just copies some code from a directory in the project... this plugin does not fail despite doing nearly the exact same steps as the Sunday Generator (which is visible at https://github.com/outfoxx/sunday-generator in the gradle-plugin directory.

FYI, I maintain the Sunday Generator plugin. It's up to date with the latest Gradle, and I can see no reason why it should offend the Quarkus plugin

Output of uname -a or ver

macOS 15.0.1

Output of java -version

Java 21

Quarkus version or git rev

3.16.1

Build tool (ie. output of mvnw --version or gradlew --version)

Gradle 8.9

Additional information

No response

@kdubb kdubb added the kind/bug Something isn't working label Nov 7, 2024
Copy link

quarkus-bot bot commented Nov 7, 2024

/cc @geoand (jib,kotlin), @glefloch, @quarkusio/devtools

@jbonofre
Copy link

jbonofre commented Nov 7, 2024

FYI, the problem happens with quarkusBuild also (not only with jib).
I saw that building one project individually works, but a full build doesn't.

As share on zulip this morning:

  • maybe additionalForcedProperties property should be actually optional in the quarkusAppPartsBuild task ?
  • should I force a value for this property ?

@jbonofre
Copy link

jbonofre commented Nov 7, 2024

Just tested with Quarkus 3.16.2 and same issue. So, we should fix that for 3.16.3.

I'm working on a PR.

@jbonofre
Copy link

jbonofre commented Nov 7, 2024

For clarify: it's an issue with Quarkus 3.16.1 with Gradle in some "configuration".

jbonofre added a commit to jbonofre/polaris that referenced this issue Nov 7, 2024
@aloubyansky
Copy link
Member

Yes, this shouldn't be required. FYI @cdsap
@jbonofre feel free to open a PR. Thanks!

@jbonofre
Copy link

jbonofre commented Nov 8, 2024

@aloubyansky here we go ;) thanks !

@guitcastro
Copy link

Is there any workaround for it?

@cdsap
Copy link
Contributor

cdsap commented Nov 8, 2024

@aloubyansky, I'm still investigating the issue.

In a simple multi-module project, the issue does not appear. However, in the reproducer provided by @kdubb, the issue is triggered when the common project applies the sunday-generator plugin. I'm reviewing the code to identify what specifically triggers this behavior on the common-db task.

If I remove the plugin from the common module, the build passes: Link to Build Scan.

@cdsap
Copy link
Contributor

cdsap commented Nov 9, 2024

Added a first proposal solution for this issue #44399, but I will explore more options

@nining
Copy link

nining commented Nov 10, 2024

Is there any workaround, or should I wait for the next release?

@kdubb
Copy link
Contributor Author

kdubb commented Nov 11, 2024

@nining The workaround seems to be targeting a specific module (e.g. ./gradlew module_name:build); Gradle still ensures all the dependent modules are built as needed. If you need to build multiple modules, you have to invoke Gradle multiple times.

@cdsap
Copy link
Contributor

cdsap commented Nov 12, 2024

Another generic workaround is to define in the root build gradle the quarkus plugin without applying it:

 plugins {
    alias(libs.plugins.quarkus) apply false
 }

I tested the reproducer of this issue and with this workaround it works:
Reproducer Build Scan: https://ge.solutions-team.gradle.com/s/gg54xme7udczs
Reproducer with the root build gradle workaround: https://ge.solutions-team.gradle.com/s/opqnmmh4jigj2

It looks like the Gradle issue is gradle/gradle#17559 and it was discussed in the recent presentation https://speakerdeck.com/aurimas/gradle-the-build-system-that-loves-to-hate-you?slide=79

My proposal #44399 is still using the BuildService so won't fix entirely the issue, I'm exploring if it makes more sense to implement a different alternative to process the additional forced properties. ImageBuild and ImagePush can use inputs/outputs without problems, the only remaining issue would be nativeArgs(Action<Map<String, ?>> action) of the QuarkusBuild task.

@kdubb
Copy link
Contributor Author

kdubb commented Nov 14, 2024

@cdsap Thanks for the workaround. Fixed our behemoth of a project as well!

@quarkus-bot quarkus-bot bot added this to the 3.18 - main milestone Nov 14, 2024
jbonofre added a commit to jbonofre/polaris that referenced this issue Nov 14, 2024
@HerrDerb
Copy link
Contributor

Thanks for the fix 🙂👍 any chance for 3.17 instead of 3.18?

@aloubyansky
Copy link
Member

It has a backport label set, so it will be considered. FYI @gsmet

@gsmet gsmet modified the milestones: 3.18 - main, 3.16.4 Nov 19, 2024
jbonofre added a commit to jbonofre/polaris that referenced this issue Nov 20, 2024
jbonofre added a commit to jbonofre/polaris that referenced this issue Nov 21, 2024
adutra pushed a commit to adutra/polaris that referenced this issue Nov 22, 2024
adutra pushed a commit to adutra/polaris that referenced this issue Nov 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants