[英]How Jetty plugin works for Maven?
我是Maven的新手,我正在開發一個使用名為Entando的產品開發的門戶網站(但我的問題不是關於Entando,而是關於Maven)。
所以,在文檔中我發現了關於Maven的這個陳述:
Maven負責所有依賴項,並且由於Jetty插件,它還可以在沒有DBMS和servlet容器的情況下執行門戶,由於這個原因,這些容器沒有基本的先決條件。
所以我知道Maven做了什么,並且閱讀文檔,在我看來, Jetty插件是一個Maven插件,它只是掃描項目的變化,並自動重新部署webapp(如果有的話)。 通過消除構建和部署步驟,這使得開發周期更具生產力。
好的......這看起來很清楚但是它用於在沒有DBMS和servlet容器的情況下執行門戶的意思是什么?
我假設您引用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\\target
下生成如此多的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-Plugin(與Java 1.7兼容)添加到您的Maven項目中,您可以運行mvn jetty:run
從您的pom.xml
所在的目錄mvn jetty:run
。 在查看構建輸出時,您將識別出一些例外情況,例如webAppSourceDirectory not set. Trying src\\main\\webapp
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
)。
=> Jetty是一個夢想,如果你問我 - 可以在pom.xml
快速配置它,只在純Java中調用/啟動類(並配置它們)或者將它安裝在磁盤上並使用它從命令行作為獨立服務器(在其屬性-XML中配置)。
注意:人們常常忘記Jetty不是他們的最終部署環境,他們只是將它用於更快的開發過程......不要犯這個錯誤,並不時將WAR
部署到最終的部署環境(如Tomcat或其他)。
希望有幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.