gpt4 book ai didi

java - Jetty 插件如何为 Maven 工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:49 25 4
gpt4 key购买 nike

我是 Maven 的新手,我正在使用名为 Entando 的产品开发门户网站(但我的问题不是关于 Entando,而是关于 Maven) .

因此,在文档中我找到了关于 Maven 的声明:

Maven takes care of all the dependencies and thanks to the Jetty plugin it can also execute the portal without a DBMS and servlet container, which do not figure in the basic prerequisites for this reason.

所以我知道 Maven 做了什么,阅读文档后,在我看来,Jetty 插件是一个 Maven 插件,它只扫描项目的更改并在发现任何更改时自动重新部署 webapp .这通过消除构建和部署步骤提高了开发周期的效率。

好吧……这看起来很清楚,但是它用于在没有 DBMS 和 servlet 容器的情况下执行门户是什么意思?

最佳答案

我假设您引用了 Entando 的文档。

关于 Jetty,它是一个完整的 Web 服务器,可以轻松地作为嵌入式服务器运行。您可以在他们的网站上找到有关 jetty 的各种信息:http://www.eclipse.org/jetty/

特别有趣的是 Jetty 对此处描述的 Maven 标准目录布局的良好支持:http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html#configuring-your-webapp

在给您最终答案之前,让我们先快速了解一下在处理 Web 应用程序项目时使用 Jetty 有多容易。

您可以像这样从控制台从 Maven 原型(prototype)生成 Web 应用程序(假设您使用 Windows 并且您已经设置了 MAVEN_HOME-Variable 并将其添加到 PATH-Variable,否则从安装 Maven 的地方运行它):

mvn archetype:generate -DgroupId=ch.jba -DartifactId=SampleWebApp -DarchetypeArtifactId=maven-archetype-webapp

您可能需要点击 Enter几次使用默认值(例如版本)。

之后你会有一个文件夹SampleWebApp在您运行上述命令的目录中。在这个文件夹里面有 pom.xml项目以及/src文件夹。

(作为可选步骤,您可以将此项目导入您的 IDE - 选择 Java 1.7,这是我快速验证的版本,它可以用于下一步)。

现在,如果您浏览 src\main\webapp 下的文件你会认出(我想是的......)标准的 web 应用程序目录结构就像这里描述的例子:https://docs.oracle.com/javaee/6/tutorial/doc/bnadx.html .

现在您可以通过运行命令 mvn clean install 来构建这个项目了。 - 这将产生非常想要的 SampleWebApp.warSampleWebApp\target 下存档.

如果您不想在本地设置 Tomcat 之类的网络服务器并仍然快速运行示例应用程序,那么此时 Jetty 就会发挥作用。只需在 </build> 上方添加以下内容即可在你的pom.xml :

<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.11.v20150529</version>
</plugin>
</plugins>
</build>

这会将 Jetty-Plugin(与 Java 1.7 兼容)添加到您的 Maven 项目中,您可以运行 mvn jetty:run从您的目录中 pom.xml居住。查看构建输出时,您会发现一些异常,例如 webAppSourceDirectory not set. Trying src\main\webapp这正是我上面提到的 Jetty 对 Maven 的标准目录布局的非常好的支持

之后您将看到示例项目部署在 Jetty 上并且可以在 http://localhost:8080 下访问(它将显示 Hellow World! 或您放入位于 SampleWebApp\src\main\webapp 下的 index.jsp 中的任何其他内容。

现在终于可以回答您的问题了:

看看你引用的这一部分:

它也可以在没有 DBMS 和 servlet 容器的情况下执行门户,由于这个原因,它们不在基本先决条件中。

它告诉您 Entando(无论那是什么......我自己还没有听说过)在您已阅读该引用的状态下故意执行尚未配置 DBMS 或 servlet容器,让您可以轻松地使用 Jetty 运行它。

如果您继续阅读 Entando 的教程/手册,它可能会告诉您如何配置 Jetty 以使用(嵌入式)DMBS(如 H2-In-Memory-DB)和/或如何配置 Jetty 以工作作为 servlet 容器(因此它也支持 HTTPServlet s)。

=> 如果您问我,Jetty 是一个理想的合作伙伴——要么在您的 pom.xml 中快速配置它,仅从纯 Java 中调用/启动类(并配置它们)或将其安装在磁盘上并从命令行将其用作独立服务器(在其属性 XML 中进行配置)。

注意:人们常常忘记 Jetty 不是他们的最终部署环境,他们只是使用它来加快开发过程......不要犯这个错误并部署你的WAR不时到最终部署环境(如 Tomcat 或其他)。

希望对您有所帮助:)

关于java - Jetty 插件如何为 Maven 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31241602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com