JAVA基礎--Maven的簡單應用

      在項目開發過程當中,只要依賴第三方庫的必定會使用到Maven,那麼Maven究竟是什麼,該怎麼使用,可能對咱們來講就不是特別的清楚; 此次就來看看我整理的一些Maven簡單用法;html

    1, Maven介紹:apache

            maven是用於構建和管理任何JAVA項目的工具;tomcat

    2, Maven的目標:  服務器

           讓開發人員在最短的時間內瞭解開發工做的完整狀態;框架

    好了好了,這些廢話就先到這裏;須要詳細瞭解的能夠訪問其官網:maven

    http://maven.apache.org/what-is-maven.htmlide

    3, 從官網上將Maven下載下來:工具

        (1),   MAVEN目錄說明:post

            bin     :  包含mvn的運行腳本; 在cmd中輸入mvn調用該目錄;
            boot  :  包含類加載器的框架, mvn使用它加載本身的類庫;
            conf   :  配置文件目錄;
            lib      :  包含自身和第三方的類庫;測試

        (2),   環境變量配置:
            M2_HOME
            D:\Maven\apache-maven-3.5.2

            Path中加入:
            %M2_HOME%\bin

            驗證: cmd中:  mvn -v 

        (3),  項目編譯: 
        在項目目錄下: 
        mvn -v       : 查看Maven版本
        mvn compile  : 項目編譯
        mvn test         : 項目測試
        mvn package  : 打包jar
        mvn clean    : 刪除target
        mvn install  : 安裝jar包到本地倉庫

        (4), 建立目錄的兩種方式:
        1, mvn archetype:generate  按照提示進行選擇
        2, mvn archetype:generate -DgroupId=組織名(網址反寫+項目名)
                                            -DartifactId=項目名-模塊名
                                            -Dversion=版本號
                                            -Dpackage=代碼所在的包名
        例:
        D:\Maven\code\maven02>mvn archetype:generate -DgroupId=com.gy.maven02 -DartifactId=maven02-utils -Dversion=0.0.1SNAPSHOT -Dpackage=com.gy.maven02.utils
 

 4, Maven中的座標和倉庫:
    Maven 經過這三個來定位座標: 
        <groupId>com.gy.maven01</groupId>
        <artifactId>maven01-model</artifactId>
        <version>0.0.1-SNAPSHOT</version>

    Maven 倉庫 :  本地倉庫,遠程倉庫
        鏡像倉庫:
            更改: D:\Maven\apache-maven-3.5.2\conf\settings.xml 中 第152行:

<!--切換阿里鏡像-->
    <mirror>
	  <id>aliyun</id>
	  <mirrorOf>central</mirrorOf>
	  <name>aliyun</name>
	  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	</mirror>

        更改本地倉庫位置:
            更改: D:\Maven\apache-maven-3.5.2\conf\settings.xml 中 第55行:

<!--切換本地倉庫位置-->
<localRepository>D:/Maven/repo</localRepository>

        更改默認JDK版本:

                更改: D:\Maven\apache-maven-3.5.2\conf\settings.xml 中 第197行:

<!--切換JDK版本爲1.8-->
<profile>
    <id>jdk-1.8</id>
    <activation>
		<activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
</profile>


5, 完整項目構建過程包括:
    清理, 編譯, 測試, 打包, 集成測試, 驗證, 部署

6, Maven 生命週期:
    clean   : 清理項目
        clean的三個階段:
            pre-clean  : 執行清理前的工做
            clean      : 清理上一次構件生產的全部文件
            post-clean : 執行清理後的文件

    default : 構建項目(最核心)
        clean,--> compile,--> test,--> package, install
        執行package時會依次執行前面的步驟;
    site        : 生成項目站點
        site的四個階段:
            pre-site : 在生成項目站點前要完成的工做;
            site       : 生成項目的站點文檔;
            post-site: 在生成項目站點後要完成的工做;
            site-deploy : 發佈生成站點到服務器上7, Maven插件的使用:
7,  Maven插件的使用:  在項目pom.xml中添加:

<build>
        <!-- Maven插件集合 -->
        <plugins>
            <!-- Maven-source插件,做用: 將項目源碼打包 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.4</version>
                <executions><!-- 插件運行階段集合 -->
                    <execution>
                        <phase>package</phase><!-- 在項目package(打包)時運行該插件 -->
                        <goals><!-- 運行目標 -->
                            <goal>jar-no-fork</goal><!--與jar類似(將源碼打成jar包),但不會構建生命週期-->
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

8, pom.xml經常使用元素介紹:

<?xml version="1.0" encoding="UTF-8"?>
<!--  Maven官網: http://maven.apache.org  -->

<!-- project: pom.xml的根元素,包含maven的約束信息 -->
<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/maven-v4_0_0.xsd">
	<!--  固定的MAVEN版本  -->
	<modelVersion>4.0.0</modelVersion>

	<!-- 
		多模塊使用: 

		<parent></parent>	parent: 一般用於子模塊中對父模塊的繼承;

		<modules>			modules: 指定多個模塊,一塊兒進行編譯
			<module></module>
		</modules>
	-->

	
	<!--
		當前項目座標:
			groupId    : 反寫的公司網址.項目名;
			artifactId : 項目名-模塊名;
			version    : 項目版本
				第一個0: 大版本號;
				第二個0: 分支版本號;
				第三個0: 小版本號;
				SNAPSHOT 快照版本;
				ALPHA    內部測試;
				BETA     公測版本;
				GA		 正式發佈;
	-->
	<groupId>com.gy.maven01</groupId>
	<artifactId>maven01-model</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	
	<!--
		打包形式,默認爲jar:
			jar  JAR包;
			war  WAR包;
			zip  壓縮包;
			pom  配置包;

		<packaging>jar</packaging>
	-->

	<!--
		不常常用:

		產生項目文檔時須要用:
		<name>項目描述名</name>

		項目地址:
		<url></url>

		項目描述:
		<description></description>

		項目開發人員列表:
		<developers></developers>

		開源框架許可證信息:
		<licenses></licenses>
		
		組織信息:
		<organization></organization>
	-->
	<!-- 
		重要:
		
		項目依賴列表 
		<dependencies>
			<dependency>	dependency: 依賴項目
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.10</version>
				<type></type>
				<scope>test</scope>			scope: 依賴範圍;
				<optional>false</optional>	optional(true|false): 設置依賴是否可選,默認爲false;
				<exclusions>				exclusions: 排除依賴的列表
					<exclusion></exclusion> exclusion : 排除依賴的項目
				</exclusions>   
			</dependency>
		</dependencies>
	-->
	
	<!--
		<scope></scope> : 依賴範圍詳解(官網: http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope):
		
		compile  : 默認,對編譯,測試,運行 都有效;
		provided : 在編譯,測試時有效;
		runtime  : 在測試,運行時有效;
		test	 : 只在測試時有效;
		system	 : 在編譯,測試時有效;與本機系統相關聯,移植性差;
		import   : 導入的依賴範圍;它只使用在 <dependencyManagement> 中,表示從其餘pom中導入dependency配置;
	-->

	<!--
		不常常使用:
		<dependencyManagement>	dependencyManagement: 項目依賴管理
			<dependencies>	dependencies: 項目依賴列表 
				做用: 裏面的依賴項目不會直接參與運行,一般定義在父類模塊中,供子模塊繼承;
			</dependencies>	
		</dependencyManagement>
		
	-->

	<!-- 項目依賴列表 -->
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
		</dependency>
	</dependencies>

	<!--
		<build>	
			<plugins>	plugins: Maven插件列表
				<plugin> plugin: 插件
					<groupId>org.apache.tomcat.maven</groupId>
					<artifactId>tomcat8-maven-plugin</artifactId>
					<version>2.2</version>
					<executions>
						<execution>
							<phase>package</phase>	在打包時執行該插件
							<goals>
								<goal>run</goal>    運行目標: run;
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</build>
	-->


	<build>
		<!-- Maven插件集合 -->
		<plugins>
			<!-- Maven-source插件,做用: 將項目源碼打包 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>2.4</version>
				<executions><!-- 插件運行階段集合 -->
					<execution>
						<phase>package</phase><!-- 在項目package(打包)時運行該插件 -->
						<goals><!-- 運行目標 -->
							<goal>jar-no-fork</goal><!--與jar類似(將源碼打成jar包),但不會構建生命週期-->
						</goals>
					</execution>
				</executions>
			</plugin>

		</plugins>
	</build>

</project>

9, Maven依賴傳遞:
    B依賴A; C依賴B, ===> C依賴A

10, Maven依賴衝突:
    1, 短路優先原則: 
        A -> B -> C -> X(jar);
        A -> D -> X(jar);
        兩條路徑優先解析下面的較短路徑;

    2, 路徑相同,先聲明先解析;
11,  Maven聚合和繼承:

<!--
		<parent></parent>	parent: 一般用於子模塊中對父模塊的繼承;

		<modules>			modules: 指定多個模塊,一塊兒進行編譯
			<module></module>
		</modules>


        <dependencyManagement>	dependencyManagement: 項目依賴管理
			<dependencies>	dependencies: 項目依賴列表 
				做用: 裏面的依賴項目不會直接參與運行,一般定義在父類模塊中,供子模塊繼承;
			</dependencies>	
		</dependencyManagement>
-->

差很少就是這麼多了,其餘的用法能夠參考MAVEN官網;

參考:   http://maven.apache.org

參考 :  https://www.imooc.com/learn/443

相關文章
相關標籤/搜索