Andy Damevin
11/05/2025, 7:20 PMmavenCentral() {
metadataSources {
gradleMetadata()
mavenPom()
}
}
the weird thing is that for other repos such as guava or junit, it does look for the .module file in central even without this conf. I might be missing something..
2025-11-05T20:17:32.455+0100 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Completing Build operation 'Metadata of <https://repo.maven.apache.org/maven2/io/mvnpm/esbuild-java-native-deps/2.0.0-beta-2/esbuild-java-native-deps-2.0.0-beta-2.pom>'
2025-11-05T20:17:32.456+0100 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Metadata of <https://repo.maven.apache.org/maven2/io/mvnpm/esbuild-java-native-deps/2.0.0-beta-2/esbuild-java-native-deps-2.0.0-beta-2.pom>' completed
...
2025-11-05T20:17:32.308+0100 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Completing Build operation 'Metadata of <https://repo.maven.apache.org/maven2/com/google/guava/guava/33.5.0-jre/guava-33.5.0-jre.module>'
2025-11-05T20:17:32.308+0100 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationRunner] Build operation 'Metadata of <https://repo.maven.apache.org/maven2/com/google/guava/guava/33.5.0-jre/guava-33.5.0-jre.module>' completedThomas Broyer
11/05/2025, 7:24 PMAndy Damevin
11/05/2025, 7:26 PMAndy Damevin
11/05/2025, 7:26 PMAndy Damevin
11/05/2025, 7:28 PMAndy Damevin
11/05/2025, 7:28 PMThomas Broyer
11/05/2025, 7:29 PM<!-- do_not_remove: published-with-gradle-metadata --> line?
When generated with Gradle, the POMs will also include a comment explaining why it's there; see e.g. on one of my projects: https://repo.maven.apache.org/maven2/net/ltgt/gradle/incap/incap/1.0.0/incap-1.0.0.pomAndy Damevin
11/05/2025, 7:29 PMAndy Damevin
11/05/2025, 7:29 PMAndy Damevin
11/05/2025, 7:29 PMAndy Damevin
11/05/2025, 7:29 PMAndy Damevin
11/05/2025, 7:30 PMJendrik Johannes
11/06/2025, 8:41 AMAndy Damevin
11/06/2025, 8:43 AMAndy Damevin
11/06/2025, 8:44 AMJendrik Johannes
11/06/2025, 8:50 AMJendrik Johannes
11/06/2025, 8:50 AMJendrik Johannes
11/06/2025, 8:51 AMAndy Damevin
11/06/2025, 9:46 AMAndy Damevin
11/06/2025, 9:50 AMJendrik Johannes
11/06/2025, 9:54 AMAnyway thanks you very much and I'll also apply your suggested changes on the gradle plugin unless you want to add the PR directly.Please go ahead and do this yourself. I have enough PRs in enough projects laying around right now. π Happy to review the changes though once you have done them.
Jendrik Johannes
11/06/2025, 9:55 AMJendrik Johannes
11/06/2025, 10:21 AMAndy Damevin
11/06/2025, 10:42 AMAndy Damevin
11/06/2025, 10:45 AMJendrik Johannes
11/06/2025, 10:47 AMJendrik Johannes
11/06/2025, 10:55 AMI spent already quite some time figuring how to have a solution working both Maven/Gradle and with a nice user xp and I am finally thereWill you document this somewhere for your users? I am interested to see both Gradle and Maven solution. Getting a good user experience should be the goal. And ideally one that is the same at some point no matter which "Native Jars" you use. Similar issues exist with JavaFX and LWJGL. With both I got involved as mention in the issue. And there are discussions about how usability would improve (or get worse) with adding the Gradle metadata. Your setup could be a good orientation here.
Caleb Cushing
11/06/2025, 12:22 PMJendrik Johannes
11/06/2025, 1:52 PMcom.autonomousapps.dependency-analysis-gradle-plugin and org.gradlex.jvm-dependency-conflict-resolution on top of Gradle core. And then there are some others depending on which features you need in your development and deployment process (e.g. do you use JPMS, do you want code analysis/formatting, do you want to publish to Maven Central etc.). But there is a limited list of these features that fits many many projects. If I am new to this and search for "how to build a Java project", I should find a Gradle setup which gives me a such good setup to start with.
If both things existed, (2) should only contain plugins that are also contained in (1).Vampire
11/06/2025, 1:59 PMJendrik Johannes
11/06/2025, 2:04 PMAndy Damevin
11/06/2025, 2:05 PMWill you document this somewhere for your users? I am interested to see both Gradle and Maven solution. Getting a good user experience should be the goal. And ideally one that is the same at some point no matter which "Native Jars" you use.We will document it for Gradle yes as part of the https://github.com/quarkiverse/quarkus-web-bundler doc for Gradle usage (to add the plugin), In the case of Maven, it's using arch/os based profile activation which in the end is pretty similar to variants but don't require a plugin for the arch/os part. https://github.com/mvnpm/esbuild-java/blob/main/native-deps/pom.xml#L64-L83
Vampire
11/06/2025, 2:37 PM<http://community.gradle.org|community.gradle.org>, yes.
But I somehow doubt that he will do any more significant work on *.<http://gradle.org|gradle.org> and I think I've not seen him online here since he left.Oleg Nenashev
11/06/2025, 8:23 PMOleg Nenashev
11/06/2025, 8:28 PMOleg Nenashev
11/06/2025, 8:31 PMMartin
11/06/2025, 9:06 PMMartin
11/06/2025, 9:09 PMCaleb Cushing
11/06/2025, 9:09 PMCaleb Cushing
11/06/2025, 9:10 PMCaleb Cushing
11/06/2025, 9:10 PMMartin
11/06/2025, 9:11 PMCaleb Cushing
11/06/2025, 9:12 PMMartin
11/06/2025, 9:12 PMCaleb Cushing
11/06/2025, 9:13 PMVampire
11/07/2025, 8:34 AMThen we, as a community, don't have to curate lists of "good" plugins, good practices, etc... "Good" plugins would just display on their README that they are compatible with Gradle strict mode π₯
I didn't think this is true. As Caleb said, just passing strict mode does not ensure goodness. And even if it did, there would be a need for a curated list, otherwise you have to click through all plugin's readmes to find good ones, and if there are similar ones you also need curation about what to use best in the opinion of the curator.
Andy Damevin
11/07/2025, 8:36 AMAndy Damevin
11/07/2025, 8:37 AMAndy Damevin
11/07/2025, 8:37 AMVampire
11/07/2025, 8:39 AMMartin
11/07/2025, 9:51 AMMartin
11/07/2025, 9:53 AMMartin
11/07/2025, 9:54 AMVampire
11/07/2025, 9:54 AMI agree it's hard. But it would also be very valuable to move the ecosystemSure, just saying that even for the "old stuff" there might still be important and valid use-case, so a plugin can be perfectly fine, following all best-practices, provide super service, and still would not be able to say "compatible with strict mode" if the strict mode would forbid all eager API.
Vampire
11/07/2025, 9:55 AMMartin
11/07/2025, 9:55 AMthe strict mode would forbid all eager API.Probably it means the strict mode needs to be smarter than that. I.e. define "phases" when it's OK or not to call the eager APIs.
Martin
11/07/2025, 9:56 AMVampire
11/07/2025, 9:58 AMMartin
11/07/2025, 10:28 AMVampire
11/07/2025, 10:34 AMMartin
11/07/2025, 10:36 AMMartin
11/07/2025, 10:37 AMVampire
11/07/2025, 10:38 AMMartin
11/07/2025, 10:38 AMAndy Damevin
11/07/2025, 10:43 AMMartin
11/07/2025, 10:49 AMMartin
11/07/2025, 10:50 AMAndy Damevin
11/07/2025, 10:50 AM