maven快捷使用說明

1、下載maven : https://maven.apache.org/download.cgi

 配置環境變量:M2_HOME:D:\apache-maven-3.5.4
                :path:%M2_HOME%\bin;
    測試maven:cmd  mvn -v

2、groupId的值就是項目的包名

   artifactId的值就模塊名
   version版本

   例如:
    <groupId>com.maven.demo</groupId>
    <artifactId>maven01-model</artifactId>
    <version>0.0.1SNAPSHOT</version>

    maven的目錄結構
        project
            src
                -main
                    -java
                        -package
                -test
                    -java
                        -package
                resources
        mvn compile
        mvn test
        mvn package

3、maven常用構建命令

    mvn -v 查看maven版本
        compile 編譯
        test 測試
        package 打包
        clean 刪除target
        install 安裝jar包到本地倉庫中(先找pom.xml依賴,在找本地庫,最後找網上中央庫)

maven自動建立目錄骨架
第一種方式 mvn archetype:generate

第二種方式 mvn archetype:generate -DgroupId=組織名,公司網址的反寫+項目名 
                                      -DartifactId=項目名-模塊名 
                                      -Dversion=1.0.0SNAPSHOT 
                                      -Dpackage=代碼存在的包

maven 座標和倉庫
        基本座標:
            構件
            <groupId>com.maven.demo</groupId>
            <artifactId>maven01-model</artifactId>
            <version>0.0.1SNAPSHOT</version>
        倉庫:
            本地倉庫
            遠程倉庫(maven-model-bulider)
        鏡像倉庫
            \apache-maven-3.5.4\conf\settings.xml (152行)
            <mirror>
                <id>maven.net.cn</id>
                <mirrorOf>central</mirrorOf>  <!--可以用通配符*-->
                <name>central mirror in china</name>
                <url>http://maven.net.cn/content/groups/public</url>
            </mirror>
        更改倉庫位置(默認路徑:C:\Users\CHUAN\.m2)
            \apache-maven-3.5.4\conf\settings.xml (53行)
            <localRepository></localRepository>

eclipe安裝maven插件以及創建maven項目
        Preferences-Maven-Installations 添加maven目錄
                         -User Settings 添加maven的setting.xml(.\apache-maven-3.5.4\conf\setting.xml)

maven的生命週期和插件
        完整的項目構件過程包括:
        清理、編譯、測試、打包、集成測試、驗證、部署
        maven生命週期
        clean 清理項目
            pre-clean 執行清理前的工作
            clean 清理上一次構建生成的所有文件
            post-clean 執行清理後的文件
        default 構建項目(最核心)
            compile test package install
        site  生成項目站點
            pre-site 在生成項目站點前要完成的工作
            site 生成項目的站點文檔
            post-site 在生成項目站點後要完成的工作
            site-deploy 發佈生成的站點到服務器上

maven生命週期
        clean、compile、test、package、install

maven中pom.xml解析
        <modelVersion>4.0.0</modelVersion> 指定當前pom的版本
        座標信息
        <groupId>組織名,公司網址的反寫+項目名</groupId> 主項目的標識
        <artifactId>項目名-模塊名</artifactId> 模塊的標識
        <!--
        第一個0表示大版本號
        第二個0表示分支版本號
        第三個0表示小版本號
        0.0.1
        snapshot快照版本
        alpha內測版本
        beta公測
        release穩定
        GA正式發佈
        -->
        <version></version> 當前項目的版本號
        <!--
        默認是jar
        也可以是war,zip,pom
        -->
<packaging></packaging> 打包的方式

<name></name> 項目描述
<url></url>項目的地址
<description></description>項目描述
<developers></developers>項目開發人員
<licenses></licenses>許可
<organization></organization>組織

重要:依賴列表
        <dependencies>
            <dependency>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
                <type></type>
                <scope>test</scope> 依賴範圍
                <optional>true/默認false</optional> 設置依賴是否可選,
                                                    如果是false子項目是默認繼承的
                                                    如果是true子項目必須顯示引入該依賴
                <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></modules>聚合多個模塊

maven 依賴範圍
        <scope></scope> 三種classpath: 編譯  test測試  運行

        compile:默認的範圍,編譯測試運行都有效
        provided:在編譯和測試有效
        runtime:在運行的時候有效
        test:只在測試有效 典型應用junit
        system:在編譯和測試有效  與本機系統相關聯,可移植性差
        import:導入的範圍,它只使用在dependencyManagerment中,
               表示從其他的pom中導入dependecy的配置
        http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html      

    maven 是依賴傳遞特性的
        a-pom.xml
        b-pom.xml
        c-pom.xml
        如果b集成a,c會自動集成a。

        如果創建maven項目 jre system library 顯示jre5 但是 jre裏面是1.8
        修改setting.xml(188行)
        <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>

maven 依賴衝突
        1、短路優先
        A->B->C->X(jar)
        A->D->X(jar)優先解析
        例如:A依賴2.4jar B依賴A和2.0jar C依賴B 所以C依賴2.0jar

        2、先聲明先優先
        如果路徑長度相同,則誰先聲明,先解析誰
        例如:A依賴2.4jar B依賴2.0jar C中pom A在B前  所以C依賴2.4jar

    Maven 聚合和繼承
        maven聚合:
            父模塊的pom文件修改
            <package>pom</package>
            <modules>
                <module>子模塊項目名一</module>
                <module>子模塊項目名二</module>
            </modules>

maven繼承:
            如果每個module 也就是每個小的模塊中的pom 有重複的 jar 
            比如junit 這樣可以用繼承。。 
            創建父類項目,<packaging>標籤元素值修改爲pom 
            然後加一個標籤<dependencyManagement> 把依賴放到裏面。。 
            其中的版本號, 可以通過引用來表示,需要添加 <properties>標籤。

子類用<parent>標籤 引用父pom.xml座標
        例如:新建父類中pom.xml如下:
            <packaging>pom</packaging>
            <properties>
                <junitversion>3.8.1</junitversion>
            </properties>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junitversion}</version>
                <scope>test</scope>
            </dependency>

子類pom.xml
            <parent>
                父pom.xml的座標
            </parent>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </dependency>

使用maven構建web項目
        添加java servlet api的座標 scope爲provide
        手動創建maven骨架文件
        檢查 java build path outfolder 爲/target/classes/目錄
        項目轉換成web項目,右鍵屬性,project facets爲Dynamic 勾選
        發佈右鍵屬性,deployment assembly 把test都去掉
        在pom.xml使用packaging命令打成war包
        添加jetty maven的插件到pom.xml
            <executions>
                    <execution>
                    <!-- 在打包成功後使用jetty:run 運行 jetty的服務 -->
                        <phase>package</phase><!--打包階段-->
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>

總結:

maven下載和環境搭建
maven目錄骨架說明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章