簡體   English   中英

Jetty插件如何為Maven工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM