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 Project shall use the Java from the tooling not runtime. #7024

Merged
merged 1 commit into from
Mar 25, 2024

Conversation

lkishalmi
Copy link
Contributor

Gradle Java tooling is the recommended way to set the Java version for source sets since provably version 7.x. Java Tooling has been introduced in Gradle 6.7. In order to be able to split the Java compilation form the java runtime.

NetBeans haven't respected the tooling version from Gradle so far, rlied on that people would use the same tooling as runtime. This really needed to be fixed.

@lkishalmi lkishalmi added the Gradle [ci] enable "build tools" tests label Feb 5, 2024
@lkishalmi lkishalmi added this to the NB22 milestone Feb 5, 2024
@lkishalmi lkishalmi marked this pull request as ready for review February 5, 2024 07:48
@lkishalmi
Copy link
Contributor Author

The Java Dependencies node in Java projects was removed.
image

The Java Platform is displayed per source group in the project Properties Sources:
image

@lkishalmi
Copy link
Contributor Author

Did some limited testing on Java 20, and Java 21 as toolchains with Gradle 8.3 and Gradle 8.4 running NetBeans with Java 21

@sdedic
Copy link
Member

sdedic commented Feb 5, 2024

I wonder if some more integration with NB IDE would be useful: suggest to install gradle-detected JVMs as java platforms into the IDE, or pass Java platforms configured in the IDE to the gradle build to choose from.

@mbien
Copy link
Member

mbien commented Feb 5, 2024

please make sure that tests don't start to install JDKs

edit: what i mean by that is that existing tests should not suddenly start setting up their own env

@lkishalmi
Copy link
Contributor Author

please make sure that tests don't start to install JDKs

edit: what i mean by that is that existing tests should not suddenly start setting up their own env

This PR has no effect on the existing tests.

@sdedic
Copy link
Member

sdedic commented Feb 19, 2024

Would it be possible to retain the java platform node, provided that all source groups share the same JDK setting ? Removal would make the project view inconsistent compared to Maven project view -- there is also "Java Depenendencies" node that shows the JDK.

maven-project

@lkishalmi
Copy link
Contributor Author

Well, @sdedic I've put that node back.

image

@sdedic
Copy link
Member

sdedic commented Feb 26, 2024

Thanks !

@lkishalmi
Copy link
Contributor Author

It seems the paperwork check needs #7117

@lkishalmi
Copy link
Contributor Author

The build is finally green now. If no one objects, I'm going to merge this tomorrow!

Copy link
Member

@mbien mbien left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ran a quick test and it seems to be working fine. Code looks good to me.

on first attempt I had an outdated org.gradle.java.home in my global gradle.properties which caused an exception during new project creation (since the deamon couldn't start) and the dialog simply closed:

SEVERE [org.openide.util.Exceptions]
java.lang.IllegalArgumentException: Value '/home/mbien/dev/java/jdk-17.0.10.7.1-corretto' given for org.gradle.java.home Gradle property is invalid (Java home supplied is invalid)
	at org.gradle.internal.buildoption.Origin$GradlePropertyOrigin.handleInvalidValue(Origin.java:58)
	at org.gradle.launcher.daemon.configuration.DaemonBuildOptions$JavaHomeOption.applyTo(DaemonBuildOptions.java:137)
	at org.gradle.launcher.daemon.configuration.DaemonBuildOptions$JavaHomeOption.applyTo(DaemonBuildOptions.java:126)
	at org.gradle.internal.buildoption.StringBuildOption.applyFromProperty(StringBuildOption.java:44)
	at org.gradle.internal.buildoption.BuildOptionSet$2.convert(BuildOptionSet.java:64)
	at org.gradle.tooling.internal.provider.ProviderConnection.initParams(ProviderConnection.java:305)
	at org.gradle.tooling.internal.provider.ProviderConnection.run(ProviderConnection.java:135)
	at org.gradle.tooling.internal.provider.DefaultConnection.getModel(DefaultConnection.java:149)
	at org.gradle.tooling.internal.consumer.connection.CancellableModelBuilderBackedModelProducer.produceModel(CancellableModelBuilderBackedModelProducer.java:54)
	at org.gradle.tooling.internal.consumer.connection.PluginClasspathInjectionSupportedCheckModelProducer.produceModel(PluginClasspathInjectionSupportedCheckModelProducer.java:38)
	at org.gradle.tooling.internal.consumer.connection.AbstractConsumerConnection.run(AbstractConsumerConnection.java:64)
	at org.gradle.tooling.internal.consumer.connection.ParameterValidatingConsumerConnection.run(ParameterValidatingConsumerConnection.java:49)
	at org.gradle.tooling.internal.consumer.DefaultBuildLauncher$1.run(DefaultBuildLauncher.java:97)
	at org.gradle.tooling.internal.consumer.DefaultBuildLauncher$1.run(DefaultBuildLauncher.java:89)
	at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:143)
	at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
	at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:61)
	at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
	at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:67)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused: org.gradle.tooling.GradleConnectionException: Could not execute build using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-8.6-bin.zip'.
	at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:55)
	at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
	at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:43)
	at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:69)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
	at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
	at org.gradle.tooling.internal.consumer.DefaultBuildLauncher.run(DefaultBuildLauncher.java:83)
[catch] at org.netbeans.modules.gradle.spi.newproject.TemplateOperation$InitStep.execute(TemplateOperation.java:321)
	at org.netbeans.modules.gradle.spi.newproject.TemplateOperation.run(TemplateOperation.java:117)
	at org.netbeans.modules.gradle.spi.newproject.BaseGradleWizardIterator.instantiate(BaseGradleWizardIterator.java:76)
	at org.openide.loaders.TemplateWizard$InstantiatingIteratorBridge.instantiate(TemplateWizard.java:1048)
	at org.openide.loaders.TemplateWizard.handleInstantiate(TemplateWizard.java:602)
	at org.netbeans.modules.project.ui.NewProjectWizard.handleInstantiate(NewProjectWizard.java:51)
	at org.openide.loaders.TemplateWizard.instantiateNewObjects(TemplateWizard.java:436)
	at org.openide.loaders.TemplateWizardIterImpl.instantiate(TemplateWizardIterImpl.java:228)
	at org.openide.loaders.TemplateWizardIteratorWrapper$ProgressInstantiatingIterator.instantiate(TemplateWizardIteratorWrapper.java:155)
	at org.openide.WizardDescriptor.callInstantiateOpen(WizardDescriptor.java:1602)
	at org.openide.WizardDescriptor.callInstantiate(WizardDescriptor.java:1546)
	at org.openide.WizardDescriptor.access$2300(WizardDescriptor.java:67)
	at org.openide.WizardDescriptor$Listener$2$1.run(WizardDescriptor.java:2233)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1420)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:287)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2035)
WARNING [org.netbeans.modules.options.keymap.LayersBridge]: Invalid shortcut: org.openide.loaders.XMLDataObject@960e46c[MultiFileObject@6c55e663[Actions/Help/master-help.xml]]

Ideally the wizard would print some useful msg to the user instead of simply disappearing, but nb wizard code is a mess, so I am not sure if this can be easily achieved.

@lkishalmi lkishalmi merged commit d13f34b into apache:master Mar 25, 2024
37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Gradle [ci] enable "build tools" tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants