maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目
maven學習筆記
一、什么是maven
Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。簡而言之,Maven是一個跨平臺的項目管理工具。主要服務于基于Java平臺的項目構建、依賴管理和項目信息管理。
二、下載和安裝Maven
訪問Maven的下載頁面:http://maven.apache.org/download.html,其中包含針對不同
平臺的各種版本的Maven下載文件。對于首次接觸Maven的讀者來說,推薦使用Maven
3.0,因此下載apache-maven-3.0-bin.zip。
將安裝文件解壓到你指定的目錄;
下一步就是設置環境變量,將 Maven安裝配置到操作系統環境中。
打開系統屬性面板(桌面上右鍵單擊“我的電腦”→“屬性”),點擊高級系統設置,再點擊環境變量,在系統變量中新建一個變量,變量名為 M2_HOME,變量值為 Maven 的安裝目錄 (例如:D:\bin\apache-maven-3.0)。點擊確定,接著在系統變量中找到一個名為 Path 的變量,在變量值的末尾加上%M2_HOME%\bin;,注意多個值之間需要有分號隔開,然后點擊確定。至此,環境變量設置完成。
這里需要提一下的是 Path 環境變量,當我們在 cmd 中輸入命令時,Windows 首先會在當前目錄中尋找可執行文件或腳本,如果沒有找到,Windows 會接著遍歷環境變量 Path 中定義的路徑。由于我們將%M2_HOME%\bin 添加到了 Path 中,而這里%M2_HOME%實際上是引用了我們前面定義的另一個變量,其值是 Maven 的安裝目錄。因此,Windows 會在執行命令時搜索目錄D:\bin\apache-maven-3.0\bin,而 mvn 執行腳本的位置就是這里。
打開黑窗口,檢查我們是否安裝mvn成功。
這就代表Maven安裝成功.
第一條命令echo %M2_HOME%用來檢查環境變量是否指向了正確的Maven安裝目錄;而mvn -v執行了第一條 Maven命令,以檢查Windows 是否可以找到正確的mvn執行腳本。
q Bin:該目錄包含了 mvn 運行的腳本,這些腳本用來配置 Java 命令,準備好classpath 和相關的 Java 系統屬性,然后執行 Java 命令。其中 mvn 是基于 UNIX 平臺的 shell 腳本,mvn.bat是基于 Windows 平臺的 bat 腳本。在命令行輸入任何一條 mvn 命令時,實際上就是在調用這些腳本。該目錄還包含了 mvnDebug 和mvnDebug.bat 兩個文件,同樣,前者是 UNIX 平臺的 shell 腳本,后者是 windows的 bat 腳本。那么 mvn 和 mvnDebug 有什么區別和關系呢?打開文件我們就可以看到,兩者基本是一樣的,只是 mvnDebug 多了一條 MAVEN_DEBUG_OPTS 配置,作用就是在運行 Maven 時開啟 debug,以便調試 Maven 本身。此外,該目錄還包含 m2.conf 文件,這是classworlds 的配置文件。
q Boot: 該目錄只包含一個文件,以maven 3.0 為例,該文件為plexus-classworlds-2.2.3.jar。plexus-classworlds是一個類加載器框架,相對于默認的java類加載器,它提供了更豐富的語法以方便配置,Maven使用該框架加載自己的類庫。更多關于classworlds的信息請參考 http://classworlds.codehaus.org/。對于一般的Maven用戶來說,不必關心該文件。
q Conf: 該目錄包含了一個非常重要的文件 settings.xml。直接修改該文件,就能在機器上全局地定制 Maven 的行為。一般情況下,我們更偏向于復制該文件至~/.m2/目錄下(這里~表示用戶目錄),然后修改該文件,在用戶范圍定制 Maven的行為。本書的后面將會多次提到該 settings.xml,并逐步分析其中的各個元素。
q ?Lib: 該目錄包含了所有 Maven 運行時需要的 Java 類庫,Maven 本身是分模塊開發的,因此用戶能看到諸如 mavn-core-3.0.jar、maven-model-3.0.jar 之類的文件,此外這里還包含一些 Maven 用到的第三方依賴如 common-cli-1.2.jar、google-collection-1.0.jar 等等。(對于 Maven 2 來說,該目錄只包含一個如 maven-2.2.1-uber.jar 的文件原本各為獨立 JAR 文件的 Maven 模塊和第三方類庫都被拆解后重新合并到了這個 JAR 文件中)??梢哉f,這個 lib 目錄就是真正的 Maven。關于該文件,還有一點值得一提的是,用戶可以在這個目錄中找到 Maven 內置的超級POM。其他: LICENSE.txt 記錄了 Maven 使用的軟件許可證 Apache License Version 2.0; NOTICE.txt 記錄了 Maven 包含的第三方軟件;而 README.txt 則包含了 Maven 的簡要介紹,包括安裝需求及如何安裝的簡要指令等等。
關于~/.m2:
默認情況下,~/.m2 目錄下除了 repository 倉庫之外就沒有其他目錄和文件了,不過大多數 Maven 用戶需要復制 M2_HOME/conf/settings.xml 文件到~/.m2/settings.xml。這是一條最佳實踐。
默認情況下,該文件夾下放置了Maven本地倉庫.m2/repository。所有的Maven的構件都被存儲到該倉庫中,以方便重用。
四、在IDEA上編寫一個簡單的maven項目
新建一個工程,選擇Maven,project 選擇本地的jdk,下面Create from archetype,一定要勾選,然后選擇下面(本截圖最后一行)的-webapp。
點next,然后對GroupId和ArtifactId,分別寫上自己的項目組名和項目名。groupId 定義了項目屬于哪個組,這個組往往和項目所在的組織或公司存在關聯,譬如你在 googlecode 上 建 立 了 一 個 名 為 myapp 的 項 目 , 那 么 groupId 就 應 該 是com.googlecode.myapp,如果你的公司是 mycom,有一個項目為 myapp,那么 groupId 就應該是 com.mycom.myapp。本書中所有的代碼都基于 groupId com.juvenxu.mvnbook。artifactId 定義了當前 Maven 項目在組中唯一的 ID,我們為這個 Hello World 項目定義artifactId 為 hello-world,本書其他章節代碼會被分配其他的 artifactId。而在前面的groupId 為 com.googlecode.myapp 的例子中,你可能會為不同的子項目(模塊)分配artifactId,如:myapp-util、myapp-domain、myapp-web 等等。
Maven的setting文件和本地倉庫地址reporitory。為了讓項目在創建的時候可以快速構建,需要在Properties增加參數:archetypeCatalog=internal,這個參數的意思是插件使用內部的archetype元數據,如果不加該參數,則默認從remote中央倉庫下載,這樣會導致構建很慢,而且有可能構建失敗,這樣就只有一個pom.xml文件,其余的目錄結構都不會生成了。
????????????
點Finish,出現以下的界面就代表完成Maven項目的創建成功。
對于最重要的pom.xml文件中
最重要的是 groupId,artifactId 和 version 三行,前面兩個剛剛在上面已經介紹過了, version也很容易懂得,指的當前的版本——1.0-SNAPSHOT。SNAPSHOT 意為快照,說明該項目還處于開發中,是不穩定的版本。隨著項目的發展,version 會不斷更新,如升級為 1.0、1.1-SNAPSHOT、1.1、2.0 等等。
最后一個 name 元素聲明了一個對于用戶更為友好的項目名稱,雖然這不是必須的,但還是推薦為每個 POM 聲明 name,以方便信息交流。
五、Jetty插件的安裝與使用
根據groupId和artifactId還有version,就可以下載自己所需要的插件。因為Maven內置了一個中央倉庫的地址(http://repo1.maven.org/maven2),該中央倉庫包含了世界上大部分流行的開源項目構
件,Maven會在需要的時候去那里下載。
然后,在右側可以看到有Maven Project,點開里面的Plugins,里面有jetty,點開里面的jetty:run,同時也可以create 一個test,.這樣以后就不用每次都點開去運行jetty了,而是可以直接點test來運行。
???????????????
????????????????
出現以下信息,就代表我們jetty運行成功了,就可以去運行我們的web項目了。
六、運行WEB項目
mvn jetty:run默認啟動的是8080端口,tomcat通常占用這個端口,可以手動修改jetty插件的啟動端口,命令如下:
????????????????????????????????????????????????????mvn jetty:run -Djetty.port=9999?
另一種方法是修改pom文件,jetty插件部分代碼如下:
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.6</version> <configuration> <connectors> <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> <port>9999</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> </configuration> </plugin> ?如果不用Tomcat 或者很少用就不用擔心端口占用問題了,可以直接在地址欄,輸入http://localhost:8080/index.jsp或者http://localhost:8080。
這個地方和Tomcat不一樣,不用在前面輸入工程名,因為默認的路徑直接到根目錄下。所以直接輸入就可訪問默認頁面,index.jsp頁面。
至此,我們一個簡單的Web項目,從下載Maven到安裝Jetty插件,到得出jsp頁面就算完成了!
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 深入理解java虚拟机 (三) 第二版
 - 下一篇: python数据结构编程_写给Pytho