Jetty插件如何为Maven工作



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

因此,在文档中,我发现了关于Maven的以下语句:

Maven负责处理所有的依赖关系,这要归功于Jetty插件它还可以在没有DBMS和servlet的情况下执行门户容器,而这些容器没有包含在此的基本先决条件中原因

因此,我知道Maven是做什么的,阅读文档后,我觉得Jetty插件是一个Maven插件,它只需扫描项目中的更改,并在发现任何更改时自动重新部署Web应用程序。这通过消除构建和部署步骤使开发周期更有效率。

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

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

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

特别有趣的是Jetty对Maven标准目录布局的良好支持,如下所述:http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html#configuring-您的网络应用

在给出最终答案之前,让我们快速了解一下在处理网络应用程序项目时如何轻松使用Jetty wihen。

您可以从控制台中的maven原型生成一个web应用程序,如下所示(假设您使用Windows,并且设置了maven_HOME-Variable并将其添加到PATH变量中,否则从安装maven的位置运行它):

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

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

之后,您将在运行上述命令的目录中拥有一个文件夹SampleWebApp。在这个文件夹中有项目的pom.xml/src文件夹。

(作为一个可选步骤,您可以将此项目导入到您的IDE中-转到Java 1.7,这是我快速验证的版本,它将在下一步中工作)。

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

现在,您可以通过运行命令mvn clean install来构建这个项目,该命令将在SampleWebApptarget下生成非常需要的SampleWebApp.war存档。

如果您不想在本地设置像Tomcat这样的Web服务器,并且仍然快速运行示例应用程序,那么这就是Jetty的用武之地。只需在pom.xml内的</build>正上方添加以下内容:

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

这将Jetty插件(与Java 1.7兼容)添加到您的Maven项目中,您就可以从pom.xml所在的目录中运行mvn jetty:run。当查看构建输出时,您会发现一些异常,如webAppSourceDirectory not set. Trying srcmainwebapp,这正是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)。

=>如果你问我,Jetty是一个很好的解决方案——要么在pom.xml中快速配置它,只在纯Java中调用/启动类(并配置它们),要么在磁盘上安装它,并从命令行将其用作独立服务器(在其属性XML中配置)。

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

希望有帮助:)

最新更新