天天看點

maven學習筆記2

在eclipse中安裝maven插件以及建立maven項目: ①在eclipse4.0及MyEclipse中就不需要安裝maven插件,在window--preference中可以檢視是否有maven插件,沒有的話就需要安裝Maven插件,直接複制Maven插件到eclipse安裝目錄中的dropins中,然後修改eclipse.ini,在這個檔案裡的512m後面添加-vm,換行,再添加jdk/bin/javaw.exe儲存。 ②eclipse是預設運作在jre之上的而maven需要jdk的支援,需要tools.jar在jdk/lib目錄中,是以修改eclipse的JRE,java---Installed JREs--ADD--Next--把本地JDK的目錄放到JRE home中,并設定Dmaven.multiModuleProjectDirectory=$M2_HOME--最後勾選JDK ③更改maven本地的配置Installactions---ADD---把本地的maven目錄放進去 ④修改setting的路徑會出現的問題:1、如果版本不比對 則mvn -v檢視maven的jdk版本,然後在eclipse中配置目前使用的jdk2、run as-->Maven build...-->在goals中compile(可以在此處使用其他的指令,如:package)---》run若報-Dmaven.multiModuleProjectDirectory錯誤,則在選項-->java--》installed JRES 中設定jdk的參數,添加上“-Dmaven.multiModuleProjectDirectory=$M2_HOME”

Maven的三個生命周期:clean 清理項目:又分為三個階段(pre-clean執行清理前的工作、clean清理上一次建構生成的所有檔案、post-clean執行清理後的檔案)default 建構項目(最核心):compile、test、package、install都屬于defaultsite 生成項目站點(根據POM的資訊自動生成站點):pre-site 在生成項目站點前要完成的工作、site 生成項目的站點文檔、post-site 在生成項目站點後要完成的工作、site-deploy 釋出生成的站點到伺服器上 項目管理利器(Maven)——Pom.xml解析 <name>項目的描述名</name> <url>項目的位址</url> <description>項目描述</description> <developers>開發人員資訊</developers> <licenses>許可證資訊</licenses> <!-- 依賴清單 --><dependencies><!-- 依賴項 --><dependency><groupId></groupId><artifactId></artifactId><version></version><type></type><scope>依賴的範圍</scope><optional>設定依賴是否可選,預設是false</optional><!-- 排除依賴傳遞清單 --><exclusions><exclusion></exclusion></exclusions></dependency></dependencies><!-- 依賴的管理,一般定義在父子產品中,由子子產品去繼承 --><dependencyManagement><dependencies><dependency></dependency></dependencies></dependencyManagement><!-- 對建構行為提供相應的支援 --><build><!-- 插件清單 --><plugins><plugin><!-- 指定坐标 --><groupId></groupId><artifactId></artifactId><version></version></plugin></plugins></build><!-- 一般在子子產品中指定所繼承的父子產品 --><parent></parent><!-- 子產品清單 --><modules><module></module></modules>

項目管理利器(Maven) ——依賴範圍(classPath:編譯,運作,測試) 1.compile:預設範圍,編譯測試運作都有效 2.provided:在編譯和測試時有效(servlet API) 3.runtime:在測試和運作時有效(jdbc驅動) 4.test:隻在測試時有效5.system:在編譯和測試時有效,與本機系統關聯,可移植性差6.import:導入的範圍,它隻使用在dependencyManagement中,表示從其他的pom中導入dependency的配置 項目管理利器(Maven) ——排除依賴 假設B項目依賴A項目,C項目又依賴B項目,那麼在C項目中運作compile時,在引進B項目的同時,自動就把A項目也引進來了。如果不想将A項目導入的話,可以使用exclusions下設定exclusion,然後将A項目的坐标添加即可将A項目排除在Maven Dependeccies之外。 修改maven預設jre版本, 在setting.xml中更改 <profile> <id>jdk-1.7</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.7</jdk> </activation> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> </properties> </profile> 剔除傳遞依賴标簽 <exclusions> <exclusion> --引入傳遞依賴的坐标 實作剔除某個傳遞依賴  </exclusion></exclusions>

項目管理利器(Maven)——依賴沖突<br> 如果C和D依賴了一個不同版本的相同的構件C。<br> ①:短路優先:<br>會優先解析路徑短的版本(D)。<br>A -> B -> C -> X(jar)<br>A -> D -> X(jar) 優先解析短的(兩個X(jar)版本不同) ②:先聲明先優先:A->C->jar,A->D->jar<br>如果路徑長度相同,則誰先聲明,先解析誰(C)。 依賴沖突 不同版本的構件1.短路優先2.先聲明先優先 如果路徑長度相同,則誰先聲明,先解析誰

項目管理利器(Maven)——繼承 繼承: 多次使用到的依賴,比如:單元測試,沒有必要在所有的項目中都引用一下,此時就可以采用繼承的方式來實作,先來一個父級的POM.XML然後再繼承此POM.XML。 注意: 1. packaging 改為pom。 2. dependencyManagement 中并不提取依賴 。 3. property中定義了unit版本号,之後可以引用。 4. 父類parent中的main和test沒有意義,可以删除。 項目管理利器(Maven)——聚合 1.聚合:如果項目D依賴項目C,項目C依賴項目B,項目B依賴項目A,我們需要一個個安裝這項項目,在Maven中有一種方式可以将多個項目一次性安裝,這就是聚合的概念。簡單講就是,需要人工多次操作的,隻要MAVEN能了解,一次性告訴他,他就能幫我們做這件單調煩人的事情了。——使用<modules></modules>這個标簽。 2.繼承:多次使用到的依賴,比如:單元測試,沒有必要在所有的項目中都引用一下,此時就可以采用繼承的方式來實作,先來一個父級的POM.XML然後再繼承此POM.XML如圖中version可以用類似EL表達式的寫法,将其在屬性中定義,另外父類不必寫方法,可以将檔案删除掉 使用maven建立java工程: -DarchetypeArtifactId=maven-archetype-quickstart 建立Web工程: -DarchetypeArtifactId=maven-archetype-webapp

Maven 配置web項目 1:打開Eclipse 2:建立Maven項目,選擇archetype-webapp模闆 3:解決Servlet沒有生命依賴的問題,在pom.xml中添加servlet的依賴, 可以去中央倉庫選擇servlet版本例如: <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0-b01</version> </dependency> 4:手工完善Maven約定好的目錄結構可以在navigator視窗中手動建立../src/main/java../src/test/java 5:Project Explorer中更新項目 6:建立項目的輸出目錄build path中設定輸出路徑output folder,確定每個module都輸出在../tartet/classes目錄中 7:将Maven項目轉換為Web項目右擊-屬性-project facets-勾選動态模闆(Dynamic Web Module) 8:修改部署時配置去掉多餘的配置項例如:測試代碼右擊-屬性-Deployment Assembly-删除多餘的配置項(測試代碼) 9:使用package指令打包項目—使用jetty這個插件(在Maven的中央插件庫中尋找)作為Web容器,在中央倉庫查找jetty的plugin坐标配置到pom.xml中pom.xml例子: <build> <finalName>webbproject-demo</finalName> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId>  <artifactId>tomcat7-maven-plugin</artifactId>  <version>2.2</version><executions><execution> <phase>package</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> 擴充--Tomcat作為Web容器,需要在Tomcat的官網上下載下傳一個Tomcat的Maven插件 在tomcat官網找到Maven Plugin的坐标配置到到pom.xml中例如:  <build> <finalName>webbproject-demo</finalName> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId>   <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version>   <executions>  <execution>   <!-- 在打包成功後來運作tomcat服務 --> <phase>package</phase> <goals>   <goal>run</goal> </goals>   </execution> </executions> </plugin>   </plugins>  </build> </project>

繼續閱讀