Luc*_*ile 2 java tomcat vaadin maven jakarta-ee
我通过下载以下内容来启动该项目:https://github.com/vaadin/骨骼-starter-flow-cdi/archive/v14.zip
\n通过删除 tomEE 插件信息来编辑 pom.xml ,因为我想单独运行它。我还添加了一个 maven-war 插件信息依赖项,以便我可以使用 Java16 进行编译。并将默认构建参数更改为 maven clean package,而不是运行 tomee 插件。我的 pom.xml 最终看起来像这样:
\n<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\n <modelVersion>4.0.0</modelVersion>\n <groupId>com.example.test</groupId>\n <artifactId>jee8tc9j16v14-6-8_hello001</artifactId>\n <name>JEE8TC9J16V14.6.8_hello001</name>\n <version>1.0-SNAPSHOT</version>\n <packaging>war</packaging>\n\n <properties>\n <maven.compiler.source>16</maven.compiler.source>\n <maven.compiler.target>16</maven.compiler.target>\n <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n <failOnMissingWebXml>false</failOnMissingWebXml>\n\n <!-- Dependencies -->\n <vaadin.version>14.6.8</vaadin.version>\n\n <drivers.dir>${project.basedir}/drivers</drivers.dir>\n <drivers.downloader.phase>pre-integration-test</drivers.downloader.phase>\n </properties>\n\n <pluginRepositories>\n <pluginRepository>\n <id>central</id>\n <url>https://repo1.maven.org/maven2/</url>\n <snapshots>\n <enabled>false</enabled>\n </snapshots>\n </pluginRepository>\n </pluginRepositories>\n\n <repositories>\n <repository>\n <id>central</id>\n <url>https://repo1.maven.org/maven2/</url>\n <snapshots>\n <enabled>false</enabled>\n </snapshots>\n </repository>\n <!-- Repository used by many Vaadin add-ons -->\n <repository>\n <id>Vaadin Directory</id>\n <url>https://maven.vaadin.com/vaadin-addons</url>\n <snapshots>\n <enabled>false</enabled>\n </snapshots>\n </repository>\n </repositories>\n\n <dependencyManagement>\n <dependencies>\n <dependency>\n <groupId>com.vaadin</groupId>\n <artifactId>vaadin-bom</artifactId>\n <version>${vaadin.version}</version>\n <type>pom</type>\n <scope>import</scope>\n </dependency>\n </dependencies>\n </dependencyManagement>\n\n <dependencies>\n <dependency>\n <groupId>com.vaadin</groupId>\n <!-- Replace artifactId with vaadin-core to use only free components -->\n <artifactId>vaadin</artifactId>\n <exclusions>\n <!-- Webjars are only needed when running in Vaadin 13 compatibility mode -->\n <exclusion>\n <groupId>com.vaadin.webjar</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.insites</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.polymer</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.polymerelements</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.vaadin</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.webcomponents</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n </exclusions>\n </dependency>\n <dependency>\n <groupId>com.vaadin</groupId>\n <artifactId>vaadin-cdi</artifactId>\n </dependency>\n <dependency>\n <groupId>javax</groupId>\n <artifactId>javaee-api</artifactId>\n <version>8.0.1</version>\n <scope>provided</scope>\n </dependency>\n\n <!-- Added to provide logging output as Flow uses -->\n <!-- the unbound SLF4J no-operation (NOP) logger implementation -->\n <dependency>\n <groupId>org.slf4j</groupId>\n <artifactId>slf4j-simple</artifactId>\n </dependency>\n\n <dependency>\n <groupId>com.vaadin</groupId>\n <artifactId>vaadin-testbench</artifactId>\n <scope>test</scope>\n </dependency>\n </dependencies>\n\n <build>\n <defaultGoal>clean package</defaultGoal>\n <plugins>\n <!--\n Take care of synchronizing java dependencies and imports in\n package.json and main.js files.\n It also creates webpack.config.js if not exists yet.\n -->\n <plugin>\n <groupId>com.vaadin</groupId>\n <artifactId>vaadin-maven-plugin</artifactId>\n <version>${vaadin.version}</version>\n <executions>\n <execution>\n <goals>\n <goal>prepare-frontend</goal>\n </goals>\n </execution>\n </executions>\n </plugin>\n <plugin>\n <artifactId>maven-war-plugin</artifactId>\n <version>3.3.1</version>\n </plugin>\n \n </plugins>\n </build>\n\n <profiles>\n <profile>\n <!-- Production mode is activated using -Pproduction -->\n <id>production</id>\n <properties>\n <vaadin.productionMode>true</vaadin.productionMode>\n </properties>\n\n <dependencies>\n <dependency>\n <groupId>com.vaadin</groupId>\n <artifactId>flow-server-production-mode</artifactId>\n </dependency>\n </dependencies>\n\n <build>\n <plugins>\n <plugin>\n <groupId>com.vaadin</groupId>\n <artifactId>vaadin-maven-plugin</artifactId>\n <executions>\n <execution>\n <goals>\n <goal>build-frontend</goal>\n </goals>\n </execution>\n </executions>\n </plugin>\n </plugins>\n </build>\n </profile>\n\n <profile>\n <id>it</id>\n <build>\n <plugins>\n <!-- Runs the integration tests (*IT) after the server is started -->\n <plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-failsafe-plugin</artifactId>\n <version>2.22.2</version>\n <executions>\n <execution>\n <goals>\n <goal>integration-test</goal>\n <goal>verify</goal>\n </goals>\n </execution>\n </executions>\n <configuration>\n <trimStackTrace>false</trimStackTrace>\n <enableAssertions>true</enableAssertions>\n <systemPropertyVariables>\n <!-- Pass location of downloaded webdrivers to the tests -->\n <webdriver.chrome.driver>${webdriver.chrome.driver}</webdriver.chrome.driver>\n </systemPropertyVariables>\n </configuration>\n </plugin>\n\n <plugin>\n <groupId>com.lazerycode.selenium</groupId>\n <artifactId>driver-binary-downloader-maven-plugin</artifactId>\n <version>1.0.17</version>\n <configuration>\n <onlyGetDriversForHostOperatingSystem>true\n </onlyGetDriversForHostOperatingSystem>\n <rootStandaloneServerDirectory>\n ${project.basedir}/drivers/driver\n </rootStandaloneServerDirectory>\n <downloadedZipFileDirectory>\n ${project.basedir}/drivers/driver_zips\n </downloadedZipFileDirectory>\n <customRepositoryMap>\n ${project.basedir}/drivers.xml\n </customRepositoryMap>\n </configuration>\n <executions>\n <execution>\n <!-- use phase "none" to skip download step -->\n <phase>${drivers.downloader.phase}</phase>\n <goals>\n <goal>selenium</goal>\n </goals>\n </execution>\n </executions>\n </plugin>\n </plugins>\n </build>\n </profile>\n </profiles>\n</project>\nRun Code Online (Sandbox Code Playgroud)\n我保留其他所有内容相同,然后通过 tomcat GUI (http://localhost:8080/manager/html) 部署构建的 .war 文件。
\n访问 http://localhost:8080/jee8tc9j16v14-6-8_hello001-1.0-SNAPSHOT/ 返回以下内容:
HTTP Status 500 \xe2\x80\x93 Internal Server Error\nType Exception Report\n\nMessage Error instantiating servlet class [com.vaadin.cdi.CdiVaadinServlet]\n\nDescription The server encountered an unexpected condition that prevented it from fulfilling the request.\n\nException\n\njavax.servlet.ServletException: Error instantiating servlet class [com.vaadin.cdi.CdiVaadinServlet]\n org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)\n org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)\n org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)\n org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n java.base/java.lang.Thread.run(Thread.java:831)\nRoot Cause\n\njava.lang.NoClassDefFoundError: javax/enterprise/inject/spi/BeanManager\n java.base/java.lang.Class.getDeclaredFields0(Native Method)\n java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3229)\n java.base/java.lang.Class.getDeclaredFields(Class.java:2335)\n org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:104)\n org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)\n org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)\n org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)\n org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n java.base/java.lang.Thread.run(Thread.java:831)\nRoot Cause\n\njava.lang.ClassNotFoundException: javax.enterprise.inject.spi.BeanManager\n org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1407)\n org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1215)\n java.base/java.lang.Class.getDeclaredFields0(Native Method)\n java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3229)\n java.base/java.lang.Class.getDeclaredFields(Class.java:2335)\n org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:104)\n org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)\n org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)\n org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)\n org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n java.base/java.lang.Thread.run(Thread.java:831)\nNote The full stack trace of the root cause is available in the server logs.\n\nApache Tomcat/9.0.52\nRun Code Online (Sandbox Code Playgroud)\n也许有人知道可能导致这些问题的原因是什么?也许我部署错了?也许 TomCat9 不能与此依赖项一起使用?
\nHTTP Status 500 \xe2\x80\x93 Internal Server Error\nType Exception Report\n\nMessage Error instantiating servlet class [com.vaadin.cdi.CdiVaadinServlet]\n\nDescription The server encountered an unexpected condition that prevented it from fulfilling the request.\n\nException\n\njavax.servlet.ServletException: Error instantiating servlet class [com.vaadin.cdi.CdiVaadinServlet]\n org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)\n org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)\n org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)\n org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n java.base/java.lang.Thread.run(Thread.java:831)\nRoot Cause\n\njava.lang.NoClassDefFoundError: javax/enterprise/inject/spi/BeanManager\n java.base/java.lang.Class.getDeclaredFields0(Native Method)\n java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3229)\n java.base/java.lang.Class.getDeclaredFields(Class.java:2335)\n org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:104)\n org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)\n org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)\n org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)\n org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n java.base/java.lang.Thread.run(Thread.java:831)\nRoot Cause\n\njava.lang.ClassNotFoundException: javax.enterprise.inject.spi.BeanManager\n org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1407)\n org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1215)\n java.base/java.lang.Class.getDeclaredFields0(Native Method)\n java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3229)\n java.base/java.lang.Class.getDeclaredFields(Class.java:2335)\n org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:104)\n org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)\n org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)\n org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)\n org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n java.base/java.lang.Thread.run(Thread.java:831)\nNote The full stack trace of the root cause is available in the server logs.\n\nApache Tomcat/9.0.52\nRun Code Online (Sandbox Code Playgroud)\n抱歉,如果这个问题看起来很微不足道。我对这一切都很陌生,而且很挣扎,所以非常感谢任何帮助!:)
\nApache Tomcat 和 Eclipse Jetty 是 Servlet、JavaServer Pages 以及 Java EE 中定义的极少数其他规范的两个相互竞争的实现。但 Java EE 还定义了数十个规范,但这些产品并未实现。这两种产品都非常受欢迎,因为它们提供的 Java EE 足以满足许多人的需求。
\n因此您无法在 POM 中指定完整的 Java EE API。Tomcat 缺乏大部分 API 的实现。
\n有关更多详细信息,请参阅我对问题的回答:Java EE Web Profile vs Java EE Full Platform。特别注意我的部分,面向 Servlet(Tomcat 和 Jetty)。
\n您确实可以仅使用 Tomcat 或 Jetty 构建 Vaadin Web 应用程序。我自己已经交付了这样的应用程序,部署到 Apache Tomcat 时运行得非常好。Vaadin 的一些默认 POM 包括用于在 IDE 中运行 Jetty 的 Maven 操作。我们在下面的步骤部分中使用它。
\n查看第一句话中的 URL,我发现您通过下载 CDI 的 Skeleton Starter 启动了您的项目。\xe2\x80\x9cCDI\xe2\x80\x9d 是Contexts and Dependency Injection,是 Tomcat 未实现的众多 Java EE 规范之一。因此,POM 被设置为完整的 Java EE API。
\n\xe2\x9e\xa5 您可以下载不同的 Skeleton Starter,无需 CDI,也无需完整的 Java EE API。
\n你说:
\n\n\n对这一切都很陌生,而且很挣扎,所以非常感谢任何帮助!:)
\n
是的,Web 应用程序、Web 容器、Maven / Gradle、Vaadin、Java、Servlet和IDE的工具是复杂、繁琐、令人沮丧和烦人的。更糟糕的是,所有这一切都在不断变化!我只能说,一定要坚持,一定要坚持,一定要坚持。并反复搜索 Stack Overflow \xe2\x80\x94 这里已经涵盖了许多问题和方面,其中一些是我自己的尝试和磨难。
\n这是步骤概要,但并不是完整的教程。
\n请务必查看 Vaadin.com 网站以及 YouTube 上的教程。特别是,Marcus Hellberg 最近发布了很好的教程。此外,如果您真的遇到困难,Vaadin Ltd 公司还提供咨询和培训服务。
\n如果您的 Mac 采用 Apple Silicon(M1 芯片)而不是 Intel,请确保安装了Rosetta 2。安装仅限 Intel 的应用程序(例如Unicode Checker)将提示安装。这里的问题是,Vaadin 使用的一些 JavaScript 工具(Node.js和npm)仍然仅限英特尔使用,即使是现在,一年后的 2021 年底。
\n在Vaadin.com 的Start 页面上,单击下方的链接以下载普通 Java starter。在下一页上,查找Vaadin 14 - 纯 Java块。请注意,我们不需要Vaadin 14 - Spring Boot块,也不需要Vaadin 14 - CDI块。
\n该块中的链接下载sculpter-starter-flow-14文件夹。您可以更改名称,并将该文件夹重新定位到 IDE 项目的常用位置。
\n在 IDE 中打开下载的文件夹。等一下,Maven 正在做它的事情,解压、下载等。同时,阅读README.md页面。
\nMaven 安静后,按原样构建项目。您的 IDE 可能有一种在其 GUI 中调用 Maven 的方法。例如,IntelliJ 有一个Maven工具窗格。clean那么我们应该跑到那里去install。
如果您收到错误“未找到有效的 Maven 安装。”,请参阅此问题和此答案,指导您将“Maven 包装器”设置切换为“捆绑的 Maven”。是的,这是所有这些工具中许多愚蠢的减速带之一。
\n如果您收到错误“无法访问属性的默认字段”,请参阅此问题和此答案,导致此 Maven 文档页面告诉您要添加到 POM 的内容。是的,这是工具中许多愚蠢的减速带中的另一个。让 Maven 重新处理 IntelliJ 中的 POM \xe2\x80\x94\xc2\xa0 这意味着单击带有微小 Maven 徽标的微小浮动小windoid。
\n当您的clean&install成功运行时,您就可以运行 Web 应用程序了。在 IntelliJ 中,我转到 Maven 工具窗格,然后导航到Vaadin >插件> jetty > jetty:run的项目库。请等待几分钟,尤其是第一次,因为可能需要下载更多项目,并且必须运行 Vaadin 使用的各种工具。
最终您将在控制台上看到一条消息,指出“Started Jetty Server”。这意味着您可以切换到网络浏览器,然后指向http://localhost:8080/。您应该会看到示例应用程序,提示您输入姓名,并带有“打招呼”按钮。尝试该字段和按钮,以确保一切正常。
现在返回 IDE。停止 Jetty Web 容器。在 IntelliJ 中,我单击整个窗口右上角的红色方形图标。
\n更新: Java 16 现已终止生命。我建议您迁移到 Java 17,即当前的长期支持 (LTS) 版本。
\n你想使用Java 16,所以我们需要再次回到我们的POM。替换这两行:
\n <maven.compiler.source>1.8</maven.compiler.source>\n <maven.compiler.target>1.8</maven.compiler.target>\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\xa6 为:
\n <maven.compiler.source>16</maven.compiler.source>\n <maven.compiler.target>16</maven.compiler.target>\nRun Code Online (Sandbox Code Playgroud)\n或者使用适用于更高版本的 Maven 工具的“release”标签:
\n <maven.compiler.release>16</maven.compiler.release>\nRun Code Online (Sandbox Code Playgroud)\n保存 POM 文件。让 Maven 重新加载这个编辑过的 POM。在 IntelliJ 中,这意味着单击带有微小 Maven 徽标的微小浮动小windoid。
\n做另一个 Maven clean&install以取得良好的效果。
您可能会更新:
\n <jetty.version>9.4.43.v20210629</jetty.version>\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\xa6 或:
\n <jetty.version>10.0.6</jetty.version>\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\xa6 以及以下项目。您的 IDE 或许能够查找最新版本号。在 IntelliJ 中,删除版本号并按 Control+Space(在 macOS 上,如果我没记错的话)。
\n <!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->\n <dependency>\n <groupId>io.github.bonigarcia</groupId>\n <artifactId>webdrivermanager</artifactId>\n <version>4.4.3</version>\n <scope>test</scope>\n </dependency>\nRun Code Online (Sandbox Code Playgroud)\n <plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-compiler-plugin</artifactId>\n <version>3.8.1</version>\n </plugin>\nRun Code Online (Sandbox Code Playgroud)\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-failsafe-plugin</artifactId>\n <version>3.0.0-M5</version>\nRun Code Online (Sandbox Code Playgroud)\n将编辑保存到您的 POM。让您的 IDE 重新处理该 POM。做另一个 Maven clean& install. 也许要求 IDE 重建项目,祝你好运。然后使用该操作运行 Web 应用程序jetty:run。将您的网络浏览器指向http://localhost:8080/. 您的应用程序应该再次运行。
这是我最终确定的 POM。
\n<?xml version="1.0" encoding="UTF-8"?>\n<project xmlns="http://maven.apache.org/POM/4.0.0"\n xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\n <modelVersion>4.0.0</modelVersion>\n <groupId>com.example</groupId>\n <artifactId>project-base</artifactId>\n <name>Project base for Vaadin</name>\n <version>1.0-SNAPSHOT</version>\n <packaging>war</packaging>\n\n <properties>\n <maven.compiler.source>16</maven.compiler.source>\n <maven.compiler.target>16</maven.compiler.target>\n <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n <failOnMissingWebXml>false</failOnMissingWebXml>\n\n <vaadin.version>14.6.8</vaadin.version>\n <jetty.version>9.4.43.v20210629</jetty.version>\n </properties>\n\n <repositories>\n <!-- The order of definitions matters. Explicitly defining central here to make sure it has the highest priority. -->\n\n <!-- Main Maven repository -->\n <repository>\n <id>central</id>\n <url>https://repo.maven.apache.org/maven2</url>\n <snapshots>\n <enabled>false</enabled>\n </snapshots>\n </repository>\n <!-- Repository used by many Vaadin add-ons -->\n <repository>\n <id>Vaadin Directory</id>\n <url>https://maven.vaadin.com/vaadin-addons</url>\n <snapshots>\n <enabled>false</enabled>\n </snapshots>\n </repository>\n </repositories>\n\n <pluginRepositories>\n <!-- Maven Central repository requires https:// to access -->\n <pluginRepository>\n <id>central</id>\n <url>https://repo.maven.apache.org/maven2</url>\n <snapshots>\n <enabled>false</enabled>\n </snapshots>\n </pluginRepository>\n </pluginRepositories>\n\n <dependencyManagement>\n <dependencies>\n <dependency>\n <groupId>com.vaadin</groupId>\n <artifactId>vaadin-bom</artifactId>\n <type>pom</type>\n <scope>import</scope>\n <version>${vaadin.version}</version>\n </dependency>\n </dependencies>\n </dependencyManagement>\n\n <dependencies>\n <dependency>\n <groupId>com.vaadin</groupId>\n <!-- Replace artifactId with vaadin-core to use only free components -->\n <artifactId>vaadin</artifactId>\n <exclusions>\n <!-- Webjars are only needed when running in Vaadin 13 compatibility mode -->\n <exclusion>\n <groupId>com.vaadin.webjar</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.insites</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.polymer</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.polymerelements</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.vaadin</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n <exclusion>\n <groupId>org.webjars.bowergithub.webcomponents</groupId>\n <artifactId>*</artifactId>\n </exclusion>\n </exclusions>\n </dependency>\n\n <!-- Added to provide logging output as Vaadin uses -->\n <!-- the unbound SLF4J no-operation (NOP) logger implementation -->\n <dependency>\n <groupId>org.slf4j</groupId>\n <artifactId>slf4j-simple</artifactId>\n </dependency>\n\n <dependency>\n <groupId>javax.servlet</groupId>\n <artifactId>javax.servlet-api</artifactId>\n <version>3.1.0</version>\n <scope>provided</scope>\n </dependency>\n\n <dependency>\n <groupId>com.vaadin</groupId>\n <artifactId>vaadin-testbench</artifactId>\n <scope>test</scope>\n </dependency>\n\n <!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->\n <dependency>\n <groupId>io.github.bonigarcia</groupId>\n <artifactId>webdrivermanager</artifactId>\n <version>4.4.3</version>\n <scope>test</scope>\n </dependency>\n </dependencies>\n\n <build>\n <!-- Basil added-->\n <pluginManagement>\n <plugins>\n <plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-war-plugin</artifactId>\n <version>3.3.1</version>\n </plugin>\n </plugins>\n </pluginManagement>\n\n <defaultGoal>jetty:run</defaultGoal>\n <plugins>\n <!-- Basil added-->\n <plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-war-plugin</artifactId>\n <version>3.3.1</version>\n </plugin>\n\n <plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-compiler-plugin</artifactId>\n <version>3.8.1</version>\n </plugin>\n <!-- Jetty plugin for easy testing without a server -->\n <plugin>\n <groupId>org.eclipse.jetty</groupId>\n <artifactId>jetty-maven-plugin</artifactId>\n <version>${jetty.version}</version>\n <configuration>\n <!-- If using IntelliJ IDEA with autocompilation, this\n might cause lots of unnecessary compilations in the\n background.-->\n <scanIntervalSeconds>2</scanIntervalSeconds>\n <!-- Use war output directory to get the webpack files -->\n <webAppConfig>\n <allowDuplicateFragmentNames>true</allowDuplicateFragmentNames>\n </webAppConfig>\n </configuration>\n </plugin>\n\n\n <!--\n Take care of synchronizing java dependencies and imports in\n package.json and main.js files.\n It also creates webpack.config.js if not exists yet.\n -->\n <plugin>\n <groupId>com.vaadin</groupId>\n <artifactId>vaadin-maven-plugin</artifactId>\n <version>${vaadin.version}</version>\n <executions>\n <execution>\n <goals>\n <goal>prepare-frontend</goal>\n </goals>\n </execution>\n </executions>\n </plugin>\n </plugins>\n </build>\n\n <profiles>\n <profile>\n <!-- Production mode is activated using -Pproduction -->\n <id>production</id>\n <properties>\n <vaadin.productionMode>true</vaadin.productionMode>\n </properties>\n\n <dependencies>\n <dependency>\n <groupId>com.vaadin</groupId>\n <artifactId>flow-server-production-mode</artifactId>\n </dependency>\n </dependencies>\n\n <build>\n <plugins>\n <plugin>\n <groupId>com.vaadin</groupId>\n <artifactId>vaadin-maven-plugin</artifactId>\n <executions>\n <execution>\n <goals>\n <goal>build-frontend</goal>\n </goals>\n <phase>compile</phase>\n </execution>\n </executions>\n </plugin>\n </plugins>\n </build>\n </profile>\n\n <profile>\n <id>it</id>\n <build>\n <plugins>\n <plugin>\n <groupId>org.eclipse.jetty</groupId>\n <artifactId>jetty-maven-plugin</artifactId>\n <version>${jetty.version}</version>\n <configuration>\n <scanIntervalSeconds>0</scanIntervalSeconds>\n <stopPort>8081</stopPort>\n <stopWait>5</stopWait>\n <stopKey>${project.artifactId}</stopKey>\n </configuration>\n <executions>\n <execution>\n <id>start-jetty</id>\n <phase>pre-integration-test</phase>\n <goals>\n <goal>deploy-war</goal>\n </goals>\n </execution>\n <execution>\n <id>stop-jetty</id>\n <phase>post-integration-test</phase>\n <goals>\n <goal>stop</goal>\n </goals>\n </execution>\n </executions>\n </plugin>\n\n <!-- Runs the integration tests (*IT) after the server is started -->\n <plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-failsafe-plugin</artifactId>\n <version>3.0.0-M5</version>\n <executions>\n <execution>\n <goals>\n <goal>integration-test</goal>\n <goal>verify</goal>\n </goals>\n </execution>\n </executions>\n <configuration>\n <trimStackTrace>false</trimStackTrace>\n <enableAssertions>true</enableAssertions>\n </configuration>\n </plugin>\n </plugins>\n </build>\n </profile>\n </profiles>\n</project>\nRun Code Online (Sandbox Code Playgroud)\n如果运行良好,请再次停止 Jetty 服
| 归档时间: |
|
| 查看次数: |
239 次 |
| 最近记录: |