天天看點

maven倉庫之第一篇

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。

本文連結:https://blog.csdn.net/zhao1299002788/article/details/102135509

maven jar倉庫 :存放maven項目使用的jar包.
		中央倉庫,存放99%免費開源項目jar包,apache公司負責維護的,以T為機關的存儲.
		
	例如 : struts2-core-2.3.24 版本
		   maven項目通過坐标去倉庫中,引入需要的jar包
		   groupId 公司資訊, org.apache.struts
		   artifactId 項目資訊, struts2-core
		   version	  版本資訊, 2.3.24
	
	如果倉庫中jar包很多,也可以對倉庫建立索引提升查詢速度.
	pom檔案存放maven jar包的坐标.
	
	maven依賴管理 : 就是對jar包管理的過程.
	
	項目的一鍵管理:
		一鍵建構,實際是指,對于項目的某個流程動作,可以通過maven一個指令實作(編譯---測試--- 運作 --打包---安裝)
		什麼是建構?
		指的是項目從編譯 --- 測試 --- 運作  --打包 ----安裝整個過程都交給maven進行管理,這個過程稱為建構.
		
	maven_home 的環境變量配置
		%MAVEN_HOME%\bin;
		maven_home 是maven程式的安裝路徑.
		注意實作 : maven環境變量配置,必須要求,配置過JAVA_HOME變量名;
				   JAVA_HOME 必須是到jdk的安裝目錄可以看到bin;	
				   JAVA_HOME 路徑,不要有(x86)
	配置環境變量是為了在指令行輸入的指令,電腦會到path路徑中尋找,你輸入的指令,mvn.			   
				   
	maven工程的目錄結構 :
		src 源碼檔案夾
			main
				java 開發的java代碼;
				resources 開發使用的配置檔案;
				webapp 相當于WebCotent 存放web工程的資源檔案夾,css,jsp,image
			text
				java 測試使用的java代碼
				resources
	pom.xml檔案 是maven工程的核心配置檔案,存放maven工程的坐标資訊和maven項目使用的jar包坐标資訊,其餘的一些查詢配置.
	隻能滿足maven工程目錄結構的項目,才能使用maven指令運作.
		
	根據maven約定,一個比較标準的maven java web項目,	結合eclipse通常可以看到結構如下 :
		src/main/java			java主要代碼存放目錄
		src/main/resources		java配置檔案存放目錄
		src/test/java			java測試代碼存放目錄
		JRE System Library		jre中的一些jar包映射
		Maven Dependencies		根據pom.xml配置的依賴而導入的jar包映射
		src/main/webapp			web相關的檔案,如html等
		src/test				這個目錄暫時還沒用過
		target					maven項目輸出目錄,例如生成多的war包
		pom.xml					maven項目最重要的一個檔案
		
	Maven指令:
		compile :
			compile是maven工程的編譯指令,作用是将src/main/java下的檔案編譯為class檔案輸出到target目錄下.
		test :
			test是maven工程的測試指令,mvn test,會執行src/test/java 下的單元測試類.
		clean :
			clean是maven工程的清理指令,執行clean會删除target目錄及内容.
		package :
			package是maven工程的打包指令,對于java工程執行package打成jar包,對于web工程打成war包.
		install :
			install 是maven工程的安裝指令,執行install将maven打成jar包或者war包釋出到本地倉庫.
		deploye部署指令 : 
			是将打成的jar包或者war部署到公司私服伺服器.
			某些工具類,處理字元串,格式化日期,解析xml檔案.
		
		從運作結果中,可以看出:
			當後媽的指令執行時,前面的操作過程也都會自動執行,在同一生命周期内運作後面的指令,會自動執行前面的指令.
		
	三套生命周期 :
		maven 對項目建構過程分為三套互相獨立的生命周期,請注意這裡說的是"三套",而且"互相獨立",這三套生命周期分别是:
			Clean Lifecycle 在進行真正的建構之前進行一些清理工作.
			Default Lifecycle 建構的核心部分,編譯,測試,打包,安裝,部署等.
			Site Lifecycle 生成項目報告,站點,釋出站點.
		
	jar包沖突問題 :解決辦法
		<!-- maven項目使用jar包的坐标節點 -->
		 <dependencies>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>servlet-api</artifactId>
				<version>2.3</version>
				<scope>provided</scope> <!-- 這個就解決jar包沖突問題 -->
			</dependency>
		  </dependencies>
		
	Maven的目錄結構 :
		bin : 放入了一些指令 : mvn tomcat:run.
		boot : 放了一些引導程式,類加載器.
		conf : 配置檔案.
		lib : maven本身運作所需的jar包.
	
	pom.xml的配置檔案 :
		<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
		  <modelVersion>4.0.0</modelVersion>
		  <groupId>com.baidu</groupId>
		  <artifactId>struts_maven</artifactId>
		  <version>0.0.1-SNAPSHOT</version>
		  <packaging>war</packaging>
		  <dependencies>
			<dependency>
				<groupId>org.apache.struts</groupId>
				<artifactId>struts2-core</artifactId>
				<version>2.3.24</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>servlet-api</artifactId>
				<version>2.3</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.10</version>
			</dependency>
		  </dependencies>
		  
		  <build>
				<plugins>
					<!-- 設定編譯版本為1.7 -->
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-compiler-plugin</artifactId>
						<configuration>
							<source>1.7</source>
							<target>1.7</target>
							<encoding>UTF-8</encoding>
						</configuration>
					</plugin>
				</plugins>
			</build>
		  
		  
		  <properties>  
			<argLine>-Dfile.encoding=UTF-8</argLine>  
		</properties>  
		  
		</project>
		
	依賴範圍包括 :
		依賴範圍 : 對于編譯classpath有效	對于測試classpath有效	 對于運作時classpath有效	例子------------------------------
		compile				Y						Y							Y					spring-core
		test				-						Y							-					Junit
		provided			Y						Y							-					servlet-api
		runtime				-						Y							Y					JDBC驅動
		system				Y						Y							-					本地的,Maven倉庫之外的類庫.           

複制