GithubHelp home page GithubHelp logo

vaadin / base-starter-gradle Goto Github PK

View Code? Open in Web Editor NEW
6.0 5.0 9.0 2.96 MB

Servlet based Vaadin example project using Gradle build

Home Page: https://github.com/vaadin/vaadin-gradle-plugin

License: Apache License 2.0

Java 67.41% CSS 16.28% HTML 16.31%
vaadin gradle npm webpack flow

base-starter-gradle's Introduction

Vaadin Gradle Skeleton Starter

This project demos the possibility of having Vaadin project in npm+webpack mode using Gradle. Please see the Starting a Vaadin project using Gradle for the documentation.

Prerequisites:

  • Java 17 or higher
  • Git
  • (Optionally): Intellij Ultimate
  • (Optionally): Node.js and npm, if you have JavaScript/TypeScript customisations in your project.
    • You can either let the Vaadin Gradle plugin to install Node.js and npm/pnpm for you automatically, or you can install it to your OS:
    • Windows: node.js Download site - use the .msi 64-bit installer
    • Linux: sudo apt install npm

Vaadin Versions

  • The v24 branch (the default one) contains the example app for Vaadin latest version
  • See other branches for other Vaadin versions.

Running With Gretty In Development Mode

Run the following command in this repo:

./gradlew clean appRun

Now you can open the http://localhost:8080 with your browser.

Building In Production Mode

Simply run the following command in this repo:

./gradlew clean build -Pvaadin.productionMode

That will build this app in production mode as a WAR archive; please find the WAR file in build/libs/base-starter-gradle.war. You can run the WAR file by using Jetty Runner:

cd build/libs/
wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-runner/11.0.15/jetty-runner-11.0.15.jar
java -jar jetty-runner-11.0.15.jar base-starter-gradle.war

Now you can open the http://localhost:8080 with your browser.

Building In Production On CI

Usually the CI images will not have node.js+npm available. Luckily Vaadin will download nodejs and npm/pnpm automatically, there is nothing you need to do. To build your app for production in CI, just run:

./gradlew clean build -Pvaadin.productionMode

Running/Debugging In Intellij Ultimate With Tomcat in Development Mode

  • Download and unpack the newest Tomcat 10.
  • Open this project in Intellij Ultimate.
  • Click "Edit Launch Configurations", click "Add New Configuration" (the upper-left button which looks like a plus sign +), then select Tomcat Server, Local. In the Server tab, the Application Server will be missing, click the "Configure" button and point Intellij to the Tomcat directory.
    • Still in the launch configuration, in the "Deployment" tab, click the upper-left + button, select "Artifact" and select base-starter-gradle.war (exploded).
    • Still in the launch configuration, name the configuration "Tomcat" and click the "Ok" button.

Now make sure Vaadin is configured to be run in development mode - run:

./gradlew clean vaadinPrepareFrontend
  • Select the "Tomcat" launch configuration and hit Debug (the green bug button).

If Tomcat fails to start with Error during artifact deployment. See server log for details., please:

  • Go and vote for IDEA-178450.
  • Then, kill Tomcat by pressing the red square button.
  • Then, open the launch configuration, "Deployment", remove the (exploded) war, click + and select base-starter-gradle.war.

Running/Debugging In Intellij Community With Gretty in Development Mode

Make sure Vaadin is configured to be run in development mode - run:

./gradlew clean vaadinPrepareFrontend

In Intellij, open the right Gradle tab, then go into Tasks / gretty, right-click the appRun task and select Debug. Gretty will now start in debug mode, and will auto-deploy any changed resource or class.

There are a couple of downsides:

  • Even if started in Debug mode, debugging your app won't work.
  • Pressing the red square "Stop" button will not kill the server and will leave it running. Instead, you have to focus the console and press any key - that will kill Gretty cleanly.
  • If Gretty says "App already running", there is something running on port 8080. See above on how to kill Gretty cleanly.

base-starter-gradle's People

Contributors

caalador avatar dependabot[bot] avatar manolo avatar mcollovati avatar mshabarov avatar mstahv avatar mvysny avatar taefi avatar tarekoraby avatar vaadin-bot avatar zhesun88 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

base-starter-gradle's Issues

appRun and vaadinBuildFrontend keep changing pnpm-lock.yaml

Switching between ./gradlew appRun and ./gradlew vaadinBuildFrontend keep changing packagin.json and pnpm-lock.yaml.

This creates issue while building application in production mode.

Branch - master
Vaadin - 19.0.4
Vaadin Gradle Plugin - 20.0.0.alpha6

Steps

  1. Run ./gradlew appRun for dev mode
  2. Run ./gradlew -Pvaadin.productionMode or just ./gradlew vaadinBuildFrontend
  3. Notice the changes in package.json and pnpm-lock.yaml file
  4. Run ./gradlew appRun again and notice that changes in package.json are reverted.

Sample diff -

diff --git a/package.json b/package.json
index 0f92e73..0c10ba0 100644
--- a/package.json
+++ b/package.json
@@ -51,7 +51,7 @@
       "webpack": "4.46.0",
       "html-webpack-plugin": "4.5.1",
       "chokidar": "^3.5.0",
-      "typescript": "4.0.3",
+      "typescript": "4.2.3",
       "webpack-merge": "4.2.2",
       "webpack-dev-server": "3.11.0",
       "css-loader": "4.2.1",
@@ -63,13 +63,13 @@
       "extra-watch-webpack-plugin": "1.0.3",
       "glob": "7.1.6",
       "ts-loader": "8.0.12",
-      "workbox-webpack-plugin": "5.1.4",
+      "workbox-webpack-plugin": "6.1.0",
       "idb": "5.0.6",
-      "workbox-core": "5.1.4",
-      "workbox-precaching": "5.1.4",
+      "workbox-core": "6.1.0",
+      "workbox-precaching": "6.1.0",
       "webpack-manifest-plugin": "3.0.0"
     },
-    "hash": "1298ded2b0c003a9653da7880b46711b95a040e8fcb625acc979d94b49654696"
+    "hash": "ac1c5b1f3d4647bcc31d3c57b3ed6dde7f71543f8d4593263c9a016089cd366c"
   },
   "dependencies": {
     "lit-element": "2.3.1",
@@ -122,7 +122,7 @@
     "webpack": "4.46.0",
     "html-webpack-plugin": "4.5.1",
     "chokidar": "^3.5.0",
-    "typescript": "4.0.3",
+    "typescript": "4.2.3",
     "webpack-merge": "4.2.2",
     "webpack-dev-server": "3.11.0",
     "css-loader": "4.2.1",
@@ -134,10 +134,10 @@
     "extra-watch-webpack-plugin": "1.0.3",
     "glob": "7.1.6",
     "ts-loader": "8.0.12",
-    "workbox-webpack-plugin": "5.1.4",
+    "workbox-webpack-plugin": "6.1.0",
     "idb": "5.0.6",
-    "workbox-core": "5.1.4",
-    "workbox-precaching": "5.1.4",
+    "workbox-core": "6.1.0",
+    "workbox-precaching": "6.1.0",
     "webpack-manifest-plugin": "3.0.0"
   }
 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ed86e66..318d3c9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -53,17 +53,17 @@ devDependencies:
   lit-css-loader: 0.0.4
   lit-html: 1.3.0
   loader-utils: 2.0.0
-  ts-loader: [email protected][email protected]
-  typescript: 4.0.3
+  ts-loader: [email protected][email protected]
+  typescript: 4.2.3
   validator: 13.1.17
   webpack: [email protected]
   webpack-cli: [email protected]
   webpack-dev-server: 3.11.0_68d0005888c13e79f5e307f4e918d09a
   webpack-manifest-plugin: [email protected]
   webpack-merge: 4.2.2
-  workbox-core: 5.1.4
-  workbox-precaching: 5.1.4
-  workbox-webpack-plugin: [email protected]
+  workbox-core: 6.1.0
+  workbox-precaching: 6.1.0
+  workbox-webpack-plugin: [email protected]
 lockfileVersion: 5.2

Starter fails with Java 17

The starter fails to work with Java 17 (OpenJDK Temurin-17+35). Executing appRun produces the following error

14.20.59: Executing task 'appRun'...

Starting Gradle Daemon...
Gradle Daemon started in 1 s 158 ms
> Task :prepareInplaceWebAppFolder
> Task :createInplaceWebAppFolder UP-TO-DATE
> Task :compileJava
> Task :vaadinPrepareFrontend
> Task :processResources
> Task :classes
> Task :prepareInplaceWebAppClasses
> Task :prepareInplaceWebApp
Exception in thread "main" org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
General error during conversion: Unsupported class file major version 61

java.lang.IllegalArgumentException: Unsupported class file major version 61
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:189)
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:170)
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:156)
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:277)
	at org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:81)
	at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:251)
	at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:189)
	at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:169)
	at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:125)
	at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClassNullable(AsmReferenceResolver.java:57)
	at org.codehaus.groovy.ast.decompiled.AsmReferenceResolver.resolveClass(AsmReferenceResolver.java:44)
	at org.codehaus.groovy.ast.decompiled.ClassSignatureParser.configureClass(ClassSignatureParser.java:42)
	at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.lazyInitSupers(DecompiledClassNode.java:185)
	at org.codehaus.groovy.ast.decompiled.DecompiledClassNode.getUnresolvedSuperClass(DecompiledClassNode.java:128)
	at org.codehaus.groovy.ast.ClassNode.getUnresolvedSuperClass(ClassNode.java:1011)
	at org.codehaus.groovy.ast.ClassNode.getSuperClass(ClassNode.java:1005)
	at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:866)
	at org.apache.groovy.ast.tools.ClassNodeUtils.hasPossibleStaticMethod(ClassNodeUtils.java:233)
	at org.codehaus.groovy.ast.ClassNode.hasPossibleStaticMethod(ClassNode.java:1351)
	at org.codehaus.groovy.control.StaticImportVisitor.findStaticMethod(StaticImportVisitor.java:561)
	at org.codehaus.groovy.control.StaticImportVisitor.findStaticMethodImportFromModule(StaticImportVisitor.java:503)
	at org.codehaus.groovy.control.StaticImportVisitor.transformMethodCallExpression(StaticImportVisitor.java:252)
	at org.codehaus.groovy.control.StaticImportVisitor.transform(StaticImportVisitor.java:133)
	at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitExpressionStatement(ClassCodeExpressionTransformer.java:108)
	at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40)
	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:138)
	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:111)
	at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitConstructorOrMethod(ClassCodeExpressionTransformer.java:66)
	at org.codehaus.groovy.control.StaticImportVisitor.visitConstructorOrMethod(StaticImportVisitor.java:108)
	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:106)
	at org.codehaus.groovy.ast.ClassNode.visitMethods(ClassNode.java:1099)
	at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1092)
	at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:52)
	at org.codehaus.groovy.control.CompilationUnit.lambda$addPhaseOperations$3(CompilationUnit.java:209)
	at org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:942)
	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389)
	at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332)
	at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163)
	at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330)
	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:526)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:538)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:570)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:565)
	at groovy.lang.GroovyShell$parse.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
	at org.akhikhl.gretty.GafferConfiguratorEx.run(GafferConfiguratorEx.groovy:53)
	at org.akhikhl.gretty.GafferConfiguratorEx$run.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
	at org.akhikhl.gretty.Runner.initLogback(Runner.groovy:83)
	at org.akhikhl.gretty.Runner$initLogback.callCurrent(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185)
	at org.akhikhl.gretty.Runner.run(Runner.groovy:127)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:193)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:73)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130)
	at org.akhikhl.gretty.Runner.main(Runner.groovy:54)

1 error

	at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:295)
	at org.codehaus.groovy.control.ErrorCollector.addException(ErrorCollector.java:143)
	at org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:976)
	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389)
	at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332)
	at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163)
	at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330)
	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:526)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:538)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:570)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:565)
	at groovy.lang.GroovyShell$parse.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
	at org.akhikhl.gretty.GafferConfiguratorEx.run(GafferConfiguratorEx.groovy:53)
	at org.akhikhl.gretty.GafferConfiguratorEx$run.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
	at org.akhikhl.gretty.Runner.initLogback(Runner.groovy:83)
	at org.akhikhl.gretty.Runner$initLogback.callCurrent(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185)
	at org.akhikhl.gretty.Runner.run(Runner.groovy:127)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:193)
	at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:73)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130)
	at org.akhikhl.gretty.Runner.main(Runner.groovy:54)
Exception in thread "Thread-59" org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Eclipse Foundation\jdk-17.0.0.35-hotspot\bin\java.exe'' finished with non-zero exit value 1
	at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:414)
	at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:52)
	at org.gradle.process.internal.DefaultExecActionFactory.javaexec(DefaultExecActionFactory.java:198)
	at org.gradle.api.internal.project.DefaultProject.javaexec(DefaultProject.java:1145)
	at org.gradle.api.internal.project.DefaultProject.javaexec(DefaultProject.java:1140)
	at org.gradle.api.Project$javaexec$6.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
	at org.akhikhl.gretty.DefaultLauncher.javaExec(DefaultLauncher.groovy:112)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:351)
	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:61)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185)
	at org.akhikhl.gretty.LauncherBase$_launchThread_closure3.doCall(LauncherBase.groovy:197)
	at org.akhikhl.gretty.LauncherBase$_launchThread_closure3.doCall(LauncherBase.groovy)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
	at groovy.lang.Closure.call(Closure.java:412)
	at groovy.lang.Closure.call(Closure.java:406)
	at groovy.lang.Closure.run(Closure.java:493)
	at java.base/java.lang.Thread.run(Thread.java:833)
> Task :appRun

Confusing build statements

In the README, it is said that command ./gradlew -Pvaadin.productionMode "will build this app in production mode as a WAR archive". In the subsequent section, approximately the same thing ("To build your app for production") is stated about a different command ./gradlew clean build -Pvaadin.productionMode.

This needs to be clarified.

Ideally, we should also explain why we're adding the "clean" hack in the last command. Smells like the Vaadin Gradle plugin or a dependent feature of the build system isn't working properly, hence the "clean".

Tomcat 9

Hi,

Should it not run with tomcat 9? Why is 10 required?

dependency javax.servlet:javax.servlet-api:3.1.0 is supported even on tomcat 8.5

Thanks,

java.net.bindexception cannot assign requested address (bind failed)

I'm trying to run my app using 'appRun' gretty task but i'm having this error : java.net.bindexception cannot assign requested address (bind failed)

I'm using :

  • gradle 6.8.3
  • Gretty : id("org.gretty") version "3.0.4"
  • Vaadin Gradle Plugin: id("com.vaadin") version "20.0.1"
  • vaadinVersion = "20.0.1"

Running in production mode:

vaadin {
  pnpmEnable = true
  productionMode = true
}

Any idea how to fix this? Thanks!

Building master on Windows never completes

Running gradlew vaadinClean clean build -Pvaadin.productionMode with an empty pnpm cache on Windows 10 will never complete - the command will freeze forever.

Connecting VisualVM to the GradleDaemon process and dumping threads will reveal that the execution is blocked in the pnpm execution:

"Execution worker for ':'" #178 prio=5 os_prio=0 tid=0x0000000018b4b000 nid=0x3d7c runnable [0x0000000029bbb000]
   java.lang.Thread.State: RUNNABLE
        at java.lang.ProcessImpl.waitForInterruptibly(Native Method)
        at java.lang.ProcessImpl.waitFor(ProcessImpl.java:449)
        at com.vaadin.flow.server.frontend.TaskRunNpmInstall.runNpmInstall(TaskRunNpmInstall.java:374)
        at com.vaadin.flow.server.frontend.TaskRunNpmInstall.execute(TaskRunNpmInstall.java:118)
        at com.vaadin.flow.server.frontend.NodeTasks.execute(NodeTasks.java:634)
        at com.vaadin.gradle.VaadinBuildFrontendTask.runNodeUpdater(VaadinBuildFrontendTask.kt:132)
        at com.vaadin.gradle.VaadinBuildFrontendTask.vaadinBuildFrontend(VaadinBuildFrontendTask.kt:75)

My hypothesis is that pnpm is printing too much stuff into stdout which is not properly piped out. The buffer is rather small; when the buffer overflows, Windows will simply stop pnpm until the stdout buffer drains. Unfortunately there's nothing reading the stdout buffer and thus the buffer never drains.

I have no direct proof, but I have several items supporting this claim:

  1. When a Maven project is built on the same drive, it pre-populates the .pnpm-store folder. This will cause the gradle build to succeed, most probably because pnpm is not doing much download and will thus not overflow the stdout buffer.
  2. As opposed to Maven build, Gradle build prints nothing by default to stdout, not even when the --info switch is used.

Steps to reproduce

  1. Make sure that there is no C:\.pnpm-store, D:\.pnpm-store on any of your hard drives. This will force pnpm to redownload all dependencies, reproducinig the issue.
  2. Run gradlew vaadinClean clean build -Pvaadin.productionMode on this project on master.

Gradle + Eclipse + Annotation Processors (Share the Knowledge)

(Share the Knowledge)

Please update the build.gradle and settings.gradle files to enable automatic annotation processor configuration for Eclipse (or provide a documentation fragment):

settings.gradle snippet

pluginManagement {
  plugins {
    /* ... other plugins ... */
    id "com.diffplug.eclipse.apt" version "3.29.1"
  }
}

build.gradle snippets

plugins {
    id "java"
    id "eclipse-wtp"

    // Required for correct setup of APT in Eclipse
    id "com.diffplug.eclipse.apt"

    // ... other plugins
}
// Required for correct setup of APT in Eclipse
eclipseJdt.dependsOn cleanEclipseJdt, eclipseJdtApt
eclipseJdtApt.dependsOn cleanEclipseJdtApt, eclipseFactorypath
eclipseFactorypath.dependsOn cleanEclipseFactorypath
eclipse {

    // Required for correct setup of APT in Eclipse
    synchronizationTasks eclipseJdt

    project { /* ... */ }

    classpath { /* ... */ }

    jdt {
        apt { /* optional configuration entries */ }
        factorypath { /* optional configuration entries */ }
    }
}

Confusing comment in build.gradle

This snippet says that it can be omitted and is just there for showing how to configure the vaadin plugin:

// The following pnpmEnable = false is not needed as npm is used by default,
// this is just an example of how to configure the Gradle Vaadin Plugin:
// for more configuraion options please see: https://vaadin.com/docs/latest/guide/start/gradle/#all-options
vaadin {
pnpmEnable = false
}

But the documentation says that pnpmEnable defaults to true.

What is right here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.