eclipse maven在哪里_Maven操作
Maven
使用工具: eclipse,jdk1.8,maven2.2
一, Maven簡介
Maven 是Apache組織中一個頗為成功的開源項目,Maven 主要服務基于java 平臺的項目構建,依賴管理和項目信息管理.無論是小型的開源類庫項目,還是大型的企業級應用;無論是傳統的瀑布式開發,還是流行的敏捷開發,Maven都能很好的應用.
項目構建工具
項目構建: 項目的編譯,單元測試,生成文檔,打包和部署.
Ant 構建
- 最早的構建工具,基于 IDE, 大概是 2000 年有的,當時是最流行 java 構建工具,不過 它的 XML 腳本編寫格式讓 XML 文件特別大。對工程構建過程中的過程控制特別好。
Maven (java)
- 項目對象模型,通過其描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。 它填補了 Ant 缺點,Maven 第一次支持了從網絡上下載的功能,仍然采用 xml 作為配置文 件格式。Maven 專注的是依賴管理,使用 Java 編寫。
Gradle
- 屬于結合以上兩個的優點,它繼承了 Ant 的靈活和 Maven 的生命周期管理,它最后被 google 作為了 Android 御用管理工具。它最大的區別是不用 XML 作為配置文件格式,采 用了 DSL 格式,使得腳本更加簡潔。
Maven 的四大特性
1. 依賴管理系統 ( jar 項目的多模塊 )
Maven 為 Java 世界引入了一個新的依賴管理系統 jar 包管理, jar 升級時修改配置文 件即可。在 Java 世界中,可以用 groupId、artifactId、version 組成的 Coordination(坐 標)唯一標識一個依賴。
任何基于 Maven 構建的項目自身也必須定義這三項屬性,生成的包可以是 Jar 包,也 可以是 war 包或者 jar 包。一個典型的依賴引用如下所示:
? ?javax.servlet com.baidu ? ?javax.servlet-api ueditor echarts ? ?3.1.0坐標的理解
Maven 坐標為各種組件引入了秩序,任何一個組件都必須明確定義自己的坐標。
- groupId定義當前 Maven 項目隸屬的實際項目-公司名稱。(jar 包所在倉庫路徑) 由于 Maven 中模塊的概念,因此一個實際項目往往會被劃分為很多模塊。 比如 spring 是 一個實際項目,其對應的 Maven 模塊會有很多,如 spring-core,spring-webmvc 等。
- artifactId該元素定義實際項目中的一個 Maven 模塊-項目名, 推薦的做法是使用實際項目 名稱作為 artifactId 的前綴。 比如: spring-bean, spring-webmvc 等。
- version該元素定義 Maven 項目當前所處的版本。
2. 多模塊構建
項目復查時 dao service controller 層分離將一個項目分解為多個模塊已經是很通用 的一種方式。 ? 在 Maven 中需要定義一個 parent POM 作為一組 module 的聚合 POM。在該 POM 中可以使用 標簽來定義一組的模塊。parent POM 不會有什么實際構建產出。 而 parent POM 中的 build 配置以及依賴配置都會自動繼承給子 module。
3. 一致的項目結構 ( 不同的IDE 項目機構是一致 )
Ant 時代大家創建 Java 項目目錄時比較隨意,然后通過 Ant 配置指定哪些屬于 source, 那 些 屬 于 testSource 等 。 而 Maven 在 設 計 之 初 的 理 念 就 是 Conversion over configuration(約定大于配置)。其制定了一套項目目錄結構作為標準的 Java 項目結構, 解決不同 ide 帶來的文件目錄不一致問題。
4. 一致的構建模型和插件機制 ( 通過 pom 配置 tomcat , jetty 插件 )
? ?org.mortbay.jetty ? ?maven-jetty-plugin ? ?6.1.25 ? ? ? ? ? ?10 ? ? ? ?/test ? ?二, Maven 的安裝配置及目錄構建
1. Maven 的安裝配置
2. Maven 目錄結構
2.1 創建一個文件夾作為項目的根目錄
在根目錄中創建一個pom.xml 文件,內容如下:
<?xml version="1.0" encoding="utf-8"?> ? ?4.0.0? ? ?com.mohen ? ?maven01 ? ?0.0.1-SNAPSHOT ? ?jar? ? ?maven01 ? ?http://maven.apache.org? ? ? ? ? ? ?UTF-8 ? ? ? ? ? ? ? ? ? ? ? ? ? ?junit ? ? ? ? ? ?junit ? ? ? ? ? ?3.8.1 ? ? ? ? ? ?test ? ? ? ? ? ? ?2.2 編寫主函數
package com.mohen.demo;?public class Hello{ ? ?public static void main(String[] args) { ? System.out.println("hello maven"); ? }}2.3 cmd 下編譯并運行
cmd 下面, 進入項目的根目錄
2.3.1 編譯Java文件
mvn compile
2.3.2 執行main 方法
mvn exec:java -Dexec.mainClass="com.mohen.demo.Hello"
注:
第一次下載會比較慢,要修改maven 加壓之后的conf 目錄下的 settings.xml.
1.1.修改默認倉庫位置 ? 打開 maven 目錄 -> conf -> settings.xml ? 添加倉庫位置配置 ? F:/m2/repository 注:倉庫位置改為自己本機的指定目錄,"/"不要寫反 1.2.更換阿里鏡像,加快依賴下載
? ?nexus-aliyun ? ?central ? ?Nexus aliyun ? ?http://maven.aliyun.com/nexus/content/groups/public1.3 編譯不成功可能的原因
三, Eclipse 下配置Maven 環境
eclipse 默認情況下已經集成了 maven 插件,但對于 maven 的環境我們這里還需要 進行相應的環境配置。
1. 修改Maven 版本
操作步驟 : Window --> Preferences --> Maven
選擇 Installations --> Add,添加 maven,勾選新添加的 maven 版本
2. 修改setting.xml 配置文件
選擇User Settings, 修改 maven 的配置文件的位置
3. 建立項目
左側空白右鍵,選擇 New --> Project--> 搜索 Maven,選擇 Maven Project
使用默認的工作空間,然后Next , 選擇Maven 項目的模板
添加Artifact Id
Maven 項目建立后,需要修改maven 項目相關環境
3.1 修改 jre 環境為 1.8
- 3.1.1選擇項目,右鍵選擇 Build Path-->Configure Build Path,設置 jre 的環境
- 3.1.2 修改 Java 編譯的等級,與當前環境中的 jre 環境一致
- 3.1.3 啟動項目
選中項目 選擇 Run As --> maven build
設置對應的命令
執行成功
注: 第一次執行該命令報錯時,將jre 運行環境添加 maven 環境參數
環境調整
3.2 修改web 環境 ( web 項目需要配置 )
- 3.2.1 修改java 1.5 -> 1.8
- 3.2.2 修改domnamic web module 2.3 到 3.0
項目右擊選擇 Properties,選擇 Project Facets
eclipse 不能直接修改 Web 版本,可直接在配置文件(工作空間的 settings)中修改:
修改完后刷新即可.
4. 添加web項目部署插件(jetty / tomcat )
4.1 jetty 插件配置
? ?test ? ? ? ? ? ? ? ? ? ? ? ?org.mortbay.jetty ? ? ? ? ? ?maven-jetty-plugin ? ? ? ? ? ?6.1.25 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?10 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/test ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?9090 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?啟動項目
選中項目 選擇 Run As --> maven build
在Goals:( 輸入命令) jetty : run
啟動 jetty 服務器,也可以輸入命令 jetty:run -D jetty.port=9090 啟動服務瀏覽器訪問
4.2 tomcat 插件配置
? ?org.apache.tomcat.maven ? ?tomcat7-maven-plugin ? ?2.2 ? ? ? ? ? ? ? ? ? ?/test ? ? ? ?UTF-8 ? ? ? ?test ? ? ? ?tomcat8 ? ?啟動項目 選中項目 run as -->maven build -->goals,輸入命令 tomcat7:run
5. Maven 倉庫的基本概念
Maven 依賴倉庫:https://mvnrepository.com/
當第一次運行 Maven 命令的時候, 你需要有網, 因為它需要從網上下載一 些文件。 那么它從哪里下載呢? 它是從 Maven 默認的遠程庫下載的。 這個遠程倉庫由 Maven 的核心插件和可供下載的 jar 文件。
對于 Maven 來說, 倉庫只分為兩類: 本地倉庫和遠程倉庫。
當 Maven 根據坐標尋找構件的時候,它首先會查看本地倉庫,如果本地倉庫存在,則 直接使用; 如果本地沒有,Maven 就會去遠程倉庫查找,發現需要的構件之后,下載到本 地倉庫再使用。 如果本地倉庫和遠程倉庫都沒有,Maven 就會報錯。
遠程倉庫分為三種: 中央倉庫,私服, 其他公共庫。
- 中央倉庫是默認配置下,Maven 下載 jar 包的地方。
- 私服是另一種特殊的遠程倉庫,為了節省帶寬和時間,應該在局域網內架設一個私有的 倉庫服務器,用其代理所有外部的遠程倉庫。 內部的項目還能部署到私服上供其他項目使 用。
- 一般來說,在 Maven 項目目錄下,沒有諸如 lib/這樣用來存放依賴文件的目錄。 當 Maven 在執行編譯或測試時,如果需要使用依賴文件,它總是基于坐標使用本地倉庫的依 賴文件。
5.1 中央倉庫
由于原始的本地倉庫是空的,maven 必須知道至少一個可用的遠程倉庫,才能執行 maven 命令的時候下載到需要的構件。中央倉庫就是這樣一個默認的遠程倉庫。 maven-model-builder-3.3.9.jar maven 自動的 jar 中 包含了一個 超級 POM。定義 了默認中央倉庫的位置。 中央倉庫包含了 2000 多個開源項目,接收每天 1 億次以上的訪問。
5.2 私服
私服是一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務, 私服代理廣域網上的 遠程倉庫,供局域網內的 maven 用戶使用。 當 maven 需要下載構件時, 它去私服當中 找,如果私服沒有, 則從外部遠程倉庫下載,并緩存在私服上, 再為 maven 提供。 此外,一些無法從外部倉庫下載的構件也能從本地上傳到私服提供局域網中其他人使用.
四, Maven 環境下多模塊項目構建
使用maven 提供的多模塊構建的特性完成 maven 環境下多個模塊的項目的管理與構建.
項目組織
1. mohen_par 根級別項目 ( 父項目 )
1.1 選擇 Maven Project
1.2 勾選復選框,跳過模板的選擇
1.3 設置項目相關信息,Packaging 選擇 pom
2. 創建子項目 mohen_dao
2.1 選中 mohen_par 后 選擇新建 Maven Module 模塊項目
2.2 設置子項目的名稱
2.3 選擇快速創建 Java 普通項目
2.4 設置子項目的包名
3. 創建子項目 mohen_service
步驟如上,建立 mohen_service 子項目 mohen_par、mohen_dao、mohen_service 三個項目建立后,建立 web 層子項目 mohen_web
4. mohen_dao 添加方法
package com.mohen_dao;?public class UserDao { ? ?public static void add() { ? ?System.out.println("dao add..."); ? }}5. 修改 mohen_service 的 pom 文件,添加 dao 的 jar 依賴
? ?com.mohen ? ?mohen_dao ? ?0.0.1-SNAPSHOTService 添加方法
package com.mohen_service;import com.mohen_dao.UserDao;public class UserService { ? ?public static void add() { ? ? ? ?UserDao.add(); ? ? ? ?System.out.println("service add..."); ? }}6. 創建 mohen_web
選中 mohen_par ,新建 Maven Module 模塊 ,選擇 webapp 類型項目
根項目中引用子項目的模塊
? ?mohen_dao ? ?mohen_service ? ?mohen_web修改父項目與子項目的 jre 環境及 web 項目的版本,分別右鍵項目,選擇 Properties,選擇 Build Path,設置 jre 環境;web 項目需要去工作空間中設置 web 版本。(前面有具體的步驟) ? 修改根項目 pom 配置,添加 servlet 的 jar 包依賴
? ?javax.servlet ? ?javax.servlet-api ? ?3.0.1 ? ?provided添加編譯環境插件(可以不加)
? ? ? ? ? ? ? ? ? ?org.apache.maven.plugins ? ? ? ?maven-compiler-plugin ? ? ? ?2.3.2 ? ? ? ? ? ? ? ? ? ?1.8 ? ? ? ? ? ?1.8 ? ? ? ? ? ?UTF-8 ? ? ? ? ? ? ? ? ? ?7. 修改 mohen_web 的 pom 文件,添加 service 的 jar 依賴
? ?com.mohen ? ?mohen_service ? ?0.0.1-SNAPSHOT添加 source 文件夾(如果沒自動生成,就手動創建)
編寫測試 servlet
import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.mohen_service.UserService;?@WebServlet(urlPatterns="/userAction.do")public class UserAction extends HttpServlet { ? ?private static final long serialVersionUID = 1661933106038150349L; ? ?@Override ? ?protected void doGet(HttpServletRequest req, HttpServletResponse resp) ? ?throws ServletException, IOException { ? doPost(req, resp); ? } ? ?@Override ? ?protected void doPost(HttpServletRequest req, HttpServletResponse resp) ? ?throws ServletException, IOException { ? ? ? ?System.out.println("user servlet ..."); ? ? ? ?UserService.add(); ? }}添加 tomcat 插件
? ? ? ? ? ?org.apache.tomcat.maven ? ? ? ?tomcat7-maven-plugin ? ? ? ?2.1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/web ? ? ? ? ? ?UTF-8 ? ? ? ? ? ?web ? ? ? ? ? ?tomcat7 ? ? ? ? ? ?選中父項目 右鍵 run as -> maven install ,執行安裝
安裝成功
啟動 tomcat tomcat7:run
效果 瀏覽器輸入:http://localhost:8080/web/userAction.do
五, Maven 項目的打包操作
對于企業級項目,無論是進行本地測試,還是測試環境測試以及最終的項目上線,都會 涉及項目的打包操作,對于每個環境下項目打包時,對應的項目所有要的配置資源就會有所 區別,實現打包的方式有很多種,可以通過 ant,獲取通過 idea 自帶的打包功能實現項目打 包,但當項目很大并且需要的外界配置很多時,此時打包的配置就會異常復雜,對于 maven 項目,我們可以用 pom.xml 配置的方式來實現打包時的環境選擇,相比較其他形式打包 工具,通過 maven 只需要通過簡單的配置,就可以輕松完成不同環境下項目的整體打包。 ? 比如下面這樣一個項目,項目中配置了不同環境下項目所需要的配置文件,這時候需要 完成不同環境下的打包操作,此時通過修改 pom.xml 如下:
? ? ? ? ? ?dev ? ? ? ? ? ? ? dev ? ? ? ? ? ? ? ? ? ? ? ? ? ?true ? ? ? ? ? ? ? ? ? ? ? ?test ? ? ? ? ? ? ? test ? ? ? ? ? ? ? ? ? ? ? ?product ? ? ? ? ? ? ? product ? ? ? ? ? ?對于項目資源文件的配置放在 build 中
? ? ? src/main/resources/${env} ? ? ? ? ? ? ? ?src/main/java ? ? ? ? ? ? ? ? ? ?**/*.xml ? ? ? ? ? ?**/*.properties ? ? ? ? ? ?**/*.tld ? ? ? ? ? ? ? ?false ? ?此時對應打包命令,選中項目,右鍵 run as,選擇 maven build 輸入命令 ? clean compile package -Dmaven.test.skip=true ? 打包默認環境(開發環境)并且跳過 maven 測試操作 ? clean compile package -Ptest -Dmaven.test.skip=true ? 打包測試環境并且跳過 maven 測試操作 ? clean compile package -Pproduct -Dmaven.test.skip=true ? 打包生產環境并且跳過 maven 測試操作
六, Maven 依賴的基本概念
1. 依賴的基本配置
根元素 project 下的 dependencies 可以包含多個 dependence 元素,以聲明多個依賴。每個依賴都應該包含以下元素:
2. 依賴的范圍
首先需要知道,Maven 在編譯項目主代碼的時候需要使用一套 classpath。 比如:編譯項目代碼的時候需要用到 spring-core, 該文件以依賴的方式被引入到 classpath 中。 其次, Maven 在執行測試的時候會使用另外一套 classpath。 如:junit。最后在實際運行項目時,又會使用一套 classpath, spring-core 需要在該 classpath中,而 junit 不需要。 ? 那么依賴范圍就是用來控制依賴與這三種 classpath(編譯 classpath,測試 classpath, 運行時 classpath)的關系, Maven 有以下幾種依賴范圍:( 上面Scope中的5種 )
3. 傳遞性依賴
傳遞依賴機制, 讓我們在使用某個 jar 的時候就不用去考慮它依賴了什么。也不用擔心引入多余的依賴。 Maven 會解析各個直接依賴的 POM,將那些必要的間接依賴,以傳遞性依賴的形式引入到當前項目中。 注意: 傳遞依賴有可能產生沖突!! ? 沖突場景 A-->B--->C (2.0) ? A-->E--->C (1.0) ? 如果 A 下同時存在兩個不同 version 的 C,沖突!!(選取同時適合 A、B 的版本)
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的eclipse maven在哪里_Maven操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 江苏街头惊现超大号“老头乐” 堪比SUV
- 下一篇: 《真人快打》游戏新预告放出,暗示要推重制