From 12118da831e6b13399690df737b6ee1fd0485cc3 Mon Sep 17 00:00:00 2001 From: Mikael Grankvist Date: Fri, 1 Mar 2024 12:58:02 +0200 Subject: [PATCH] fix: Gradle frontend folder handling Closes #18859 --- .../com/vaadin/gradle/PrepareFrontendOutputProperties.kt | 5 +++-- .../kotlin/com/vaadin/gradle/VaadinBuildFrontendTask.kt | 4 ++-- .../kotlin/com/vaadin/gradle/VaadinFlowPluginExtension.kt | 3 ++- .../kotlin/com/vaadin/gradle/VaadinPrepareFrontendTask.kt | 5 +++-- .../com/vaadin/flow/plugin/base/BuildFrontendUtil.java | 4 ++-- .../vaadin/base/devserver/startup/DevModeInitializer.java | 8 +++----- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/PrepareFrontendOutputProperties.kt b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/PrepareFrontendOutputProperties.kt index f701d490313..106e8edc230 100644 --- a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/PrepareFrontendOutputProperties.kt +++ b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/PrepareFrontendOutputProperties.kt @@ -15,6 +15,7 @@ */ package com.vaadin.gradle +import com.vaadin.flow.plugin.base.BuildFrontendUtil import com.vaadin.flow.server.Constants import com.vaadin.flow.server.frontend.FrontendUtils import org.gradle.api.Project @@ -70,8 +71,8 @@ internal class PrepareFrontendOutputProperties( } @OutputDirectory - public fun getGeneratedTsFolder(): Property = - config.generatedTsFolder + public fun getGeneratedTsFolder(): File = + BuildFrontendUtil.getGeneratedFrontendDirectory(GradlePluginAdapter(project, config, true)) @OutputDirectory public fun getResourceOutputDirectory(): Property = config.resourceOutputDirectory diff --git a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinBuildFrontendTask.kt b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinBuildFrontendTask.kt index a7c2dbd429d..641af13598b 100644 --- a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinBuildFrontendTask.kt +++ b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinBuildFrontendTask.kt @@ -73,7 +73,7 @@ public open class VaadinBuildFrontendTask : DefaultTask() { check(tokenFile.exists()) { "token file $tokenFile doesn't exist!" } val cleanTask = TaskCleanFrontendFiles(config.npmFolder.get(), - config.frontendDirectory.get(), adapter.classFinder + BuildFrontendUtil.getGeneratedFrontendDirectory(adapter), adapter.classFinder ) BuildFrontendUtil.runNodeUpdater(adapter) @@ -105,7 +105,7 @@ public open class VaadinBuildFrontendTask : DefaultTask() { */ protected open fun cleanFrontendFiles(): Boolean { val adapter = GradlePluginAdapter(project, config, false) - if (FrontendUtils.isHillaUsed(adapter.frontendDirectory(), + if (FrontendUtils.isHillaUsed(BuildFrontendUtil.getGeneratedFrontendDirectory(adapter), adapter.classFinder)) { /* * Override this to not clean generated frontend files after the diff --git a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinFlowPluginExtension.kt b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinFlowPluginExtension.kt index d4eebea6121..92bcc202749 100644 --- a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinFlowPluginExtension.kt +++ b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinFlowPluginExtension.kt @@ -15,6 +15,7 @@ */ package com.vaadin.gradle +import com.vaadin.flow.plugin.base.BuildFrontendUtil import com.vaadin.flow.server.Constants import com.vaadin.flow.server.InitParameters import com.vaadin.flow.server.frontend.FrontendTools @@ -421,7 +422,7 @@ public class PluginEffectiveConfiguration( .convention(false) public val reactEnable: Provider = extension.reactEnable - .convention(FrontendUtils.isReactRouterRequired(frontendDirectory.get())) + .convention(FrontendUtils.isReactRouterRequired(BuildFrontendUtil.getGeneratedFrontendDirectory(GradlePluginAdapter(project, this, true)))) .overrideWithSystemProperty(InitParameters.REACT_ENABLE) public val cleanFrontendFiles: Property = extension.cleanFrontendFiles diff --git a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinPrepareFrontendTask.kt b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinPrepareFrontendTask.kt index b139fb4129c..6acc135dc68 100644 --- a/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinPrepareFrontendTask.kt +++ b/flow-plugins/flow-gradle-plugin/src/main/kotlin/com/vaadin/gradle/VaadinPrepareFrontendTask.kt @@ -22,6 +22,7 @@ import org.gradle.api.Task import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Nested import org.gradle.api.tasks.TaskAction +import kotlin.math.log /** * This task checks that node and npm tools are installed, copies frontend @@ -58,9 +59,9 @@ public open class VaadinPrepareFrontendTask : DefaultTask() { @TaskAction public fun vaadinPrepareFrontend() { // Remove Frontend/generated folder to get clean files copied/generated - project.delete(config.generatedTsFolder) - logger.info("Running the vaadinPrepareFrontend task with effective configuration $config") val adapter = GradlePluginAdapter(project, config, true) + project.delete(BuildFrontendUtil.getGeneratedFrontendDirectory(adapter)) + logger.debug("Running the vaadinPrepareFrontend task with effective configuration $config") val tokenFile = BuildFrontendUtil.propagateBuildInfo(adapter) logger.info("Generated token file $tokenFile") diff --git a/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/BuildFrontendUtil.java b/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/BuildFrontendUtil.java index 66689fccdd8..cd2060d5b33 100644 --- a/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/BuildFrontendUtil.java +++ b/flow-plugins/flow-plugin-base/src/main/java/com/vaadin/flow/plugin/base/BuildFrontendUtil.java @@ -420,7 +420,7 @@ public static void runDevBuildNodeUpdater(PluginAdapterBuild adapter) * PluginAdapterBase * @return correct folder or legacy folder if not user defined */ - private static File getFrontendDirectory(PluginAdapterBase adapter) { + public static File getFrontendDirectory(PluginAdapterBase adapter) { File frontendDir = adapter.frontendDirectory(); if (!frontendDir.exists() && frontendDir.toPath() .endsWith(DEFAULT_FRONTEND_DIR.substring(2))) { @@ -440,7 +440,7 @@ private static File getFrontendDirectory(PluginAdapterBase adapter) { * PluginAdapterBase * @return correct generated folder as child to frontend */ - private static File getGeneratedFrontendDirectory( + public static File getGeneratedFrontendDirectory( PluginAdapterBase adapter) { if (adapter.generatedTsFolder().toPath() .startsWith(adapter.frontendDirectory().toPath())) { diff --git a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeInitializer.java b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeInitializer.java index f95fefdbd60..ee0f429006d 100644 --- a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeInitializer.java +++ b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeInitializer.java @@ -273,11 +273,9 @@ public static DevModeHandler initDevModeHandler(Set> classes, InitParameters.ADDITIONAL_POSTINSTALL_PACKAGES, "") .split(","); - String frontendGeneratedFolderName = config - .getStringProperty(PROJECT_FRONTEND_GENERATED_DIR_TOKEN, - Paths.get(baseDir.getAbsolutePath(), - DEFAULT_PROJECT_FRONTEND_GENERATED_DIR) - .toString()); + String frontendGeneratedFolderName = config.getStringProperty( + PROJECT_FRONTEND_GENERATED_DIR_TOKEN, + Paths.get(frontendFolder, GENERATED).toString()); File frontendGeneratedFolder = new File(frontendGeneratedFolderName); File jarFrontendResourcesFolder = new File(frontendGeneratedFolder, FrontendUtils.JAR_RESOURCES_FOLDER);