我是 Maven 中的新手,我正在开发一个使用名为 Entando 的产品开发的门户网站(但我的问题不是关于Entando,而是关于Maven)
因此,在文档中我发现了关于Maven的声明:
Maven负责所有依赖项并感谢Jetty 插件它也可以在没有DBMS和servlet的情况下执行门户 容器,它没有计入基本先决条件 原因。
所以我知道Maven做了什么,并且阅读文档,在我看来, Jetty 插件是一个Maven插件,只是扫描项目的更改并自动重新部署webapp如果找到任何。通过消除构建和部署步骤,这使得开发周期更具生产力。
好的......这看起来很清楚,但是它用于在没有DBMS和servlet容器的情况下执行门户网站的意思是什么?
答案 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或其他)。
希望有所帮助:)