Jetty插件如何为Maven工作?

时间:2015-07-06 08:57:49

标签: java maven java-ee jetty maven-plugin

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

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

  

Maven负责所有依赖项并感谢Jetty   插件它也可以在没有DBMS和servlet的情况下执行门户   容器,它没有计入基本先决条件   原因。

所以我知道Maven做了什么,并且阅读文档,在我看来, Jetty 插件是一个Maven插件,只是扫描项目的更改并自动重新部署webapp如果找到任何。通过消除构建和部署步骤,这使得开发周期更具生产力。

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

1 个答案:

答案 0 :(得分:3)

我假设您引用 Entando 的文档。

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

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

在给出最终答案之前,我们可以快速了解使用Jetty与Web应用程序项目一起工作的难易程度。

您可以从控制台生成maven原型的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下的文件,您将会识别(我猜是这样......)标准的webapplication目录结构,例如此处所述:https://docs.oracle.com/javaee/6/tutorial/doc/bnadx.html

现在,您可以通过运行mvn clean install命令来构建此项目,这将在SampleWebApp.war下生成如此多的需要SampleWebApp\target存档。

如果您不想在本地设置像Tomcat这样的Web服务器并且仍然可以快速运行示例应用程序,那么这就是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 for Maven标准目录布局的非常好的支持

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

现在最后回答你的问题:

看看你引用的这一部分:

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

它告诉你 Entando (无论是什么......我自己还没有听说过)在你所读过的那个状态下你的目的还没有配置DBMS或servlet容器允许您以简单的方式使用Jetty运行它。

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

=&GT;如果您问我,Jetty是一个梦想的工作 - 要么只是在pom.xml内快速配置它,只在纯Java中调用/启动类(并配置它们),要么将它安装在磁盘上并使用它从命令行作为独立服务器(在其属性-XML中配置)。

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

希望有所帮助:)