From 9a3513fc2e1634cb4f28a6977a44b88161a41340 Mon Sep 17 00:00:00 2001 From: Neil C Smith Date: Sat, 12 Aug 2023 14:53:37 +0100 Subject: [PATCH] Run gradle wrapper init with version latest to skip using a Gradle release candidate. Fix typo in Gradle project problems message. Document the API changes. --- extide/gradle/apichanges.xml | 15 ++++++++ .../GradleJavaCompatProblemsProvider.java | 2 +- .../spi/newproject/TemplateOperation.java | 35 +++++++++++++++++-- .../SimpleApplicationProjectWizard.java | 5 ++- 4 files changed, 52 insertions(+), 5 deletions(-) diff --git a/extide/gradle/apichanges.xml b/extide/gradle/apichanges.xml index 04f5dd0ce792..219ebd3c0bbe 100644 --- a/extide/gradle/apichanges.xml +++ b/extide/gradle/apichanges.xml @@ -83,6 +83,21 @@ is the proper place. + + + Method to set the Gradle version when initalizing the wrapper + + + + + +

+ Added additional addWrapperInit + method allowing to request a specific version or version label when initializing the Gradle wrapper. +

+
+ +
Adding JavaRuntimeManager abstracting the Gradle Runtime from Java Platform diff --git a/extide/gradle/src/org/netbeans/modules/gradle/GradleJavaCompatProblemsProvider.java b/extide/gradle/src/org/netbeans/modules/gradle/GradleJavaCompatProblemsProvider.java index b1108a875b7a..98fe3addd227 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/GradleJavaCompatProblemsProvider.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/GradleJavaCompatProblemsProvider.java @@ -77,7 +77,7 @@ public void removePropertyChangeListener(PropertyChangeListener listener) { "# {1} - Supported Java Version", "# {2} - Required Gradle Version", "# {3} - Forced Gradle Version", - "TXT_JavaVersionMismatch=The Java version: {0}, that is seletced for the project " + "TXT_JavaVersionMismatch=The Java version: {0}, that is selected for the project " + "is not supported by Gradle {2}." + "The IDE will attempt to use Gradle {3} to gather the project information.

" + "Possible solutions:" diff --git a/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java b/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java index 7fdc1dd37881..b8afbfbb417c 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.java @@ -149,8 +149,29 @@ public void addConfigureProject(File projectDir, ProjectConfigurator configurato steps.add(new ConfigureProjectStep(projectDir, configurator)); } + /** + * Initialize the Gradle wrapper in the target project. Equivalent to + * executing gradle wrapper. + * + * @param target project directory + */ public void addWrapperInit(File target) { - steps.add(new InitGradleWrapper(target)); + steps.add(new InitGradleWrapper(target, null)); + } + + /** + * Initialize the Gradle wrapper in the target project with the requested + * version of Gradle. Equivalent to executing + * gradle wrapper --gradle-version $version. The version may be + * the specific Gradle version required, or one of the labels supported by + * the wrapper task, eg. latest. + * + * @param target project directory + * @param version Gradle version or version label + * @since 2.34 + */ + public void addWrapperInit(File target, String version) { + steps.add(new InitGradleWrapper(target, version)); } /** * Begin creation of new project using Gradle's @@ -443,9 +464,11 @@ public Set execute() { private static final class InitGradleWrapper extends BaseOperationStep { final File projectDir; + final String version; - public InitGradleWrapper(File projectDir) { + public InitGradleWrapper(File projectDir, String version) { this.projectDir = projectDir; + this.version = version; } @Override @@ -458,7 +481,13 @@ public String getMessage() { public Set execute() { GradleConnector gconn = GradleConnector.newConnector(); try (ProjectConnection pconn = gconn.forProjectDirectory(projectDir).connect()) { - pconn.newBuild().withArguments("--offline").forTasks("wrapper").run(); //NOI18N + List args = new ArrayList<>(); + args.add("wrapper"); //NOI18N + if (version != null) { + args.add("--gradle-version"); //NOI18N + args.add(version); + } + pconn.newBuild().withArguments("--offline").forTasks(args.toArray(new String[0])).run(); //NOI18N } catch (GradleConnectionException | IllegalStateException ex) { // Well for some reason we were not able to load Gradle. // Ignoring that for now diff --git a/java/gradle.java/src/org/netbeans/modules/gradle/java/newproject/SimpleApplicationProjectWizard.java b/java/gradle.java/src/org/netbeans/modules/gradle/java/newproject/SimpleApplicationProjectWizard.java index f5ba6d5c5506..33235fc27cd1 100644 --- a/java/gradle.java/src/org/netbeans/modules/gradle/java/newproject/SimpleApplicationProjectWizard.java +++ b/java/gradle.java/src/org/netbeans/modules/gradle/java/newproject/SimpleApplicationProjectWizard.java @@ -71,7 +71,10 @@ static void collectOperationsForType(Map params, TemplateOperati Boolean initWrapper = (Boolean) params.get(PROP_INIT_WRAPPER); if (initWrapper == null || initWrapper) { - ops.addWrapperInit(root); + // @TODO allow configuration of wrapper version + ops.addWrapperInit(root, "latest"); // NOI18N + } else { + // @TODO delete wrapper added by init? } }