maven學習

Maven

強烈建議直接使用idea自帶maven

maven在idea中的配置與使用

Settings.xml配置文件詳解:https://www.cnblogs.com/soupk/p/9303611.html 

自我學習後總結:

平時我們只需要去使用idea右邊菜單欄自帶的maven,的Lifecycle中的各命令就可以【強烈建議使用Lifecycle

Lifecycle:【缺少插件自動下載】【注意:使用Lifecycle中的命令無需在pom.xml文件中添加多餘的插件,否則會因爲重複尋找插件而報錯】,Plugin:不會自動下載缺少的插件,需要在pom.xml中進行配置。【不建議使用】

  1. 配置mac中Prferences-->Maven中的3個選項,我們實際是對idea右邊菜單欄自帶的maven進行的配置。3個選項默認maven我們可以直接使用idea自帶的。Settings.xml配置文件可以直接用下面這個。   pom.xml無需添加配置

【其他具體配置請自行百度,下面配置,設置了源倉庫:阿里雲,默認jdk 1.8,】

 

  1. 安裝

下載不同的版本:https://archive.apache.org/dist/maven/maven-3/ 選擇要安裝的版本之後:再選擇binaries,然後根據操作系統選擇.tar.gz包或者.zip包即可

    1. Mac:https://blog.csdn.net/dearKundy/article/details/80291275 【內部源不要修改,該連接修改內部源的方法會引起報錯,不修改任何東西,直接使用默認配置即可】
    2. Window:
  1. mvn命令不生效辦法

配置maven環境變量時,path系統變量中配置了 ;%MAVEN_HOME%\bin,但是在命令窗口執行mvn -version沒有生效,解決辦法就是在path環境變量中直接配置maven的bin目錄的位置,如:在path環境變量添加;D:\apache-maven-3.5.4\bin;問題得到解決!!!

3. 使用

    1. 創建一個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> <!-- 公司或者組織的唯一標誌,並且配置時生成的路徑也是由此生成, 如com.companyname.project-group,maven會將該項目打成的jar包放本地路徑:/com/companyname/project-group --> <groupId>com.companyname.project-group</groupId> <!-- 項目的唯一ID,一個groupId下面可能多個項目,就是靠artifactId來區分的 --> <artifactId>project</artifactId> <!-- 版本號 --> <version>1.0</version> </project>

    1. 進入創建該文件的目錄,然後運行mvn命令:mvn help:effective-pom即可
  1. 報錯

打包:

 錯誤:repackage failed: Unable to find main class

參考:https://www.cnblogs.com/bettyling/p/10493350.html 

下面這段話是spring boot框架打包用的,如果有下面這段配置的話,就可以把他打包成直接在控制檯通過命令:java -jar 【jar包所在路徑】進行執行此jar包

spring-boot-maven-plugin 打包插件解析: https://www.cnblogs.com/jpfss/p/11098740.html 

最簡單的配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

複雜配置:

<plugins>
   <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
         <mainClass>com.xx.webapps.api.main.WebappsApiBidMain</mainClass>
      </configuration>
      <executions>
         <execution>
            <goals>
               <goal>repackage</goal>
            </goals>
         </execution>
      </executions>
   </plugin>
</plugins>

錯誤2:  Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project

實際是因爲缺少maven的編譯插件

在pom.xml文件的build加入代碼

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <verbose>true</verbose>
                <fork>true</fork>
                <executable>${JAVA8_HOME}/bin/javac</executable>
            </configuration>
        </plugin>
    </plugins>
</build>
  1. 修改(settings.xml)配置文件
    1. 修改下載源爲阿里雲

此與<profiles></profiles>同級的標籤中添加下面配置 

 <mirrors>
    <!-- 阿里雲倉庫 -->
    <mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>
    
    <!-- 中央倉庫1 -->
    <mirror>
        <id>repo1</id>
        <mirrorOf>central</mirrorOf>
        <name>Human Readable Name for this Mirror.</name>
        <url>http://repo1.maven.org/maven2/</url>
    </mirror>
    
    <!-- 中央倉庫2 -->
    <mirror>
        <id>repo2</id>
        <mirrorOf>central</mirrorOf>
        <name>Human Readable Name for this Mirror.</name>
        <url>http://repo2.maven.org/maven2/</url>
    </mirror>
  </mirrors>

b)

在<profiles> </profiles>中添加此段配置,設置默認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>

 

  1. 項目引用另一個項目,通過jar包

注:記得刪除之前mvn install的jar,如果不需要了的話

https://blog.csdn.net/weixin_33939843/article/details/91893498 

裏面的內容:自我測試然後理解:發現不只是創建maven項目, 還有springboot框架【因爲帶maven】所以同樣可以相互引用。

提示:引入項目的jar包之後,就相當於在新的項目全局引入了 那個項目的java文件夾

所以我們在import 的時候,只需要根據被引入項目的java路徑爲根路徑,進行引用即可。 栗子:java文件夾中有同級的兩個包。com.example.demo1和com2.example.demo3

那麼我們在pom.xml文件夾中,通過被引入項目pom.xml文件中配置的groupId名, name, version,導入jar包之後。【注:記住原來項目有修改或者重新install過的話,要在引入他項目的pom.xml文件中,將其重新導入一下】,然後我們就可以在新項目中通過

Import  com.example.demo1.*   和   import com2.example.demo3.* 或者直接com.example.demo1.指定類名即可

 

記住

當pom.xml文件中出現:<built></built>標籤,然後內部有下面這個的時候,mvn install 生成的jar包就不能被成功引用。暫時不知道爲什麼!!!!!!

spring-boot-maven-plugin

參考鏈接:https://www.cnblogs.com/jpfss/p/11098740.html 

 

 

 

 

尚硅谷視頻學習

1生命週期的默認生命週期最重要。 【重點看依賴】

  1. 依賴的傳遞性,a項目需要a.jar包,然後b項目引用a項目,自動導入a項目需要的a.jar包。好處就是我們可以在a項目中導入我們的jar包,b(引用a),c(引用a)項目就不需要再次手動導入,直接就可以引用a項目之後就被傳遞過來了【注意:只傳遞scope爲compile的jar包】
  2. 繼承,統一管理版本
  3. 聚合:多個存在依賴的工程,按照依賴關係,mvn統一install,complie等

1、目前掌握的技術

 

2、目前的技術在開發中存在的問題[why]

一個項目就是一個工程

如果項目非常龐大,就不適合繼續使用package來劃分模塊。最好是每一個模塊對應一個項目,利於分工協作。

藉助於maven就可以將一個項目拆分成多個工程。

 

項目中需要的jar包必須手動“複製”、”粘貼” 到WEB-INF/lib 項目下

帶來的問題:同樣的jar包文件重複出現在不同的項目工程中,一方面浪費存儲空間,另外也讓工程比較臃腫。

藉助Maven,可以將jar包僅僅保存在“倉庫”中,有需要使用的工程“引用”這個文件,並不需要重複複製。

 

jar包需要別人替我們準備好,或到官網下載

所有知名框架或第三方工具jar包已經按照統一規範放在了Maven的中央倉庫中。

 

一個jar包依賴的其他jar包需要自己手動加到項目中

Maven會自動將被依賴的jar包導入進來。

 

3、Maven是什麼[what]

Maven 是 Apache 軟件基金會組織維護的一款自動化構建工具,專注服務於 Java 平臺的項目構建和依賴管理 。Maven 這個單詞的本意是:專家,內行。讀音是[‘meɪv(ə)n]或[‘mevn]。

構建工具的發展:Make→Ant→Maven→Gradle

 

構建:就是以我們編寫的Java代碼、框架配置文件、國際化等其他資源文件、jsp頁面和圖片等靜態資源作爲“原材料”,去“生產”出一個可以運行的項目的過程。

 

eclipse中的項目與tomcat中編譯結果對比:

 

 

構建過程中的幾個主要環節

①清理:刪除以前的編譯結果,爲重新編譯做好準備。

②編譯:將Java源程序編譯爲字節碼文件。

③測試:針對項目中的關鍵點進行測試,確保項目在迭代開發過程中關鍵點的正確性。

④報告:將每一次測試後以標準的格式記錄和展示測試結果。

⑤打包:將一個包含諸多文件的工程封裝爲一個壓縮文件用於安裝或部署。Java工程對應jar包,Web工程對象war包。

⑥安裝:在Maven環境下特指將打包的結果——Jar包或War包安裝到本地倉庫中。

⑦部署:將打包的結果部署到遠程倉庫或將war包部署到服務器上運行。

 

自動化構建

程序員一天的工作:

 

能否將這些程式化的工作交給機器自動完成呢?——當然可以!這就是自動化構建。

 

此時 Maven 的意義就體現出來了,它可以自動的從構建過程的起點一直執行到終點:

 

4、安裝Maven核心程序

檢查JAVA_HOME環境變量

 

C:\Users\zxm>echo %JAVA_HOME%

D:\Program Files\Java\jdk1.8.0_111

 

解壓Maven核心程序的壓縮包,放在一個非中文、無空格 的路徑下

 

D:\ProgramData\apache-maven-3.2.2

 

配置Maven相關的環境變量

①MAVEN_HOME 或 M2_HOME

 

②path

 

驗證:運行 mvn -v 命令查看Maven版本

 

C:\Users\zxm>mvn -v

Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T21:51:42+08:00)

Maven home: D:\ProgramData\apache-maven-3.2.2

Java version: 1.8.0_111, vendor: Oracle Corporation

Java home: D:\Program Files\Java\jdk1.8.0_111\jre

Default locale: zh_CN, platform encoding: GBK

OS name: “windows 10”, version: “10.0”, arch: “amd64”, family: “dos”

 

5、Maven的核心概念

約定的目錄結構

POM

座標

依賴

倉庫

生命週期/插件/目標

繼承

聚合

6、第一個Maven工程

創建約定的目錄結構

 

pom.xml文件爲Maven工程的核心配置文件

 

爲什麼要遵循約定的目錄結構呢?

我們在開發中如果需要讓第三方工具或框架知道我們自己創建的資源在哪,那麼基本上就是兩種方式:

①以配置文件的方式明確告訴框架 如 < param-value>classpath:spring-context.xml < /param-value>

②遵循框架內部已經存在的約定 如log4j的配置文件名規定必須爲 log4j.properties 或 log4j.xml ;Maven 使用約定的目錄結構

 

7、Maven常用命令

注意:執行與構建過程相關的Maven命令,必須進入pom.xml 所在的目錄。

常用命令

【1】mvn clean : 清理 ,清除上一次maven執行的結果(也就是刪除target文件夾)

【2】mvn compile : 編譯主程序 , 在src,同級目錄下,也就是pom.xml文件存在的目錄執行此命令,會在同級目錄生成target文件夾,將我們在main/java文件夾中所寫的.java文件按照我們的目錄結構編譯爲.class文件(target中對應classes文件夾)

【3】mvn test-compile : 編譯測試程序 ,在src,同級目錄下,也就是pom.xml文件存在的目錄執行此命令,會在同級目錄生成target文件夾,將我們在test文件夾中所寫的.java文件按照我們的目錄結構編譯爲.class文件(target中對應test-classes文件夾)

【4】mvn test : 執行測試

【5】mvn package : 打包(會執行測試) 在target文件夾中生成了maven-status與surefire-reports(測試報告)兩個文件夾,以及一個項目主程序的.jar包

【6】mvn install : 安裝 ,安裝項目pom.xml文件自定義的jar包,將我們的項目安裝進入到maven的repo倉庫

【7】mvn site :生成站點

8、關於聯網問題

Maven 的核心程序中僅僅定義了抽象的生命週期,但是具體的工作必須有特定的插件來完成。而插件本身不包含在Maven核心程序中。

當我們執行的Maven命令需要用到某些插件時,Maven核心程序會首先到本地倉庫中查找。

本地倉庫的默認位置:[系統登陸用戶的家目錄] \ .m2\repository

Maven核心程序如果在本地倉庫中找不到需要的插件,那麼它會自動連接外網,到中央倉庫下載。

如果此時無法連接外網,則構建失敗。

修改默認本地倉庫的位置可以讓Maven核心程序到我們事先準備好的目錄下查找插件

①找到Maven解壓目錄\conf\settings.xml

②在setting.xml 文件中找到 localRepository 標籤

③將 < localRepository>/path/to/local/repo< /localRepository>從註釋中取出

④將標籤體內容修改爲自定義的Maven倉庫目錄

9、POM

含義:Project Object Model 項目對象模型

DOM :Document Object Model 文檔對象模型

 

pom.xml 對於 Maven工程是核心配置文件,與構建過程相關的一切設置都在這個文件中進行配置。

重要程度相當於web.xml 對於動態web工程

 

10、座標

數學中的座標:

①在平面中,使用X,Y座標可以唯一的定位平面中任何一個點。

②在空間中,使用X,Y,Z三個向量可以唯一的定位空間中的任何一個點。

 

Maven的座標:

使用下面三個向量在倉庫中唯一定位一個Maven工程

 

①groupid:公司或組織域名倒序+項目名

 

< groupid>com.atguigu.maven< /groupid>

 

②artifactid:模塊名

 

< artifactid>Hello< /artifactid>

 

③version:版本

 

< version>1.0.0< /version>

 

Maven 工程的座標與倉庫中路徑的對應關係,以spring爲例

 

< groupId>org.springframework< /groupId>

< artifactId>spring-core< /artifactId>

< version>4.0.0.RELEASE< /version>

 

org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar

 

注意:我們自己的 Maven 工程必須執行安裝操作纔會進入倉庫。安裝的命令是:mvn install

 

11、倉庫

倉庫的分類

①本地倉庫:當前電腦上部署的倉庫目錄,爲當前電腦上所有Maven工程服務

②遠程倉庫

(1)私服:搭建在局域網環境中,爲局域網範圍內的所有Maven工程服務

 

(2)中央倉庫:假設在Internet上,爲全世界所有Maven工程服務

(3)中央倉庫鏡像:爲了分擔中央倉庫流量,提升用戶訪問速度

 

倉庫中保存的內容:Maven工程

①Maven自身所需要的插件

②第三方框架或工具的jar包

③我們自己開發的Maven工程

 

不管是什麼樣的 jar 包,在倉庫中都是按照座標生成目錄結構,所以可以通過統一的方式查詢或依賴。

 

12、依賴

當 A jar 包用到了 B jar 包中的某些類時,A 就對 B 產生了依賴,這是概念上的描述。Maven解析依賴信息時會到倉庫中查找被依賴的jar包。

對於我們自己開發的Maven工程,要使用mvn install 命令安裝後就可以進入倉庫。

依賴的範圍

①從項目結構角度理解compile和test的區別

 

compile範圍依賴

》對主程序是否有效:有效

》對測試程序是否有效:有效

》是否參與打包:參與

》是否參與部署:參與

》典型例子:spring-core 【測試環境與主程序都需要用到此jar包】

 

test範圍依賴

》對主程序是否有效:無效

》對測試程序是否有效:有效

》是否參與打包:不參與

》是否參與部署:不參與

》典型例子:Junit 【測試環境需要用到junit的jar包,而main主程序不需要用到】

 

②從開發和運行這兩個階段理解compile 和 provided 的區別

 

》對主程序是否有效:有效

》對測試程序是否有效:有效

》是否參與打包:不參與

》是否參與部署:不參與

》典型例子:Servlet-api.jar 【主程序和測試的時候需要用到此插件,但是部署到服務器上,tomcat服務器內嵌了Servlet-api.jar此jar包,如果重複引用就會引起衝突】

 

③有效性總結

 

依賴的傳遞性

A依賴B,B依賴C,A能否使用C呢?要看B依賴C的範圍是不是compile

 

依賴的排除

如果我們當前工程中引入了一個依賴是A,而A又依賴了B,那麼Maven會自動將A依賴的B引入當前工程,但是個別情況下B有可能是一個不穩定版本,或對當前工程有不良影響。這時我們可以在引入A的時候將B排除。

 

①情景舉例

 

②配置方式

<dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<exclusions>
    < exclusion>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </ exclusion> 
</exclusions>
</dependency>

③排除後的效果

 

統一管理所依賴 .jar 包的版本

對同一個框架的一組jar包最好使用相同的版本。爲了方便升級架構,可以將jar包的版本信息統一提取出來

 

①統一聲明版本號

 

其中 atguigu.spring.version 部分是自定義標籤。

 

②引用前面聲明的版本號

 

 

 

③其他用法

 

依賴的原則,解決jar包衝突

①路徑最短者優先

解釋:hello引用17版本,然後helloFriend因爲有特殊需要,又在pom.xml中聲明指定了14版本,根據就近傳遞原則,makeFriends就引用了14版本

注意:如果所需版本不同,只需要在pom.xml文件中重新聲明一下就可以將傳遞過來的版本覆蓋了

 

②路徑相同時先聲明者優先

解釋: 根據MakeFriends的pom.xml中dependency聲明順序來引入,如果先dependency HelloFriend就引入14版本,否則反之。

統一管理依賴的版本

【情景舉例】

這裏對Spring各個jar包的依賴版本都是4.0.0

如果需要統一升級爲4.1.1,怎麼辦?手動逐一修改不可靠(會有遺漏)

【2】建議配置方式

I:使用properties標籤統一聲明版本號

Ii:在需要統一版本的位置,使用${自定義標籤名}引用聲明的版本號。在pom.xml中配置<properties>標籤。

13、生命週期

各個構建環節執行的順序:不能打亂順序,必須按照既定的正確順序來執行。

Maven的核心程序中定義了抽象的生命週期,生命週期中各個階段的具體任務是由插件來完成的。

Maven核心程序爲了更好的實現自動化構建,按照這一特點執行生命週期中各個階段:不論現在要執行生命週期中的哪一階段,都是從這個生命週期最初的位置開始執行。

Maven有三套相互獨立的生命週期,分別是:

①Clean Lifecycle 在進行真正的構建之前進行一些清理工作。

②Default Lifecycle 構建的核心部分,編譯、測試、打包、安裝、部署等等。

③Site Lifecycle 生成項目報告,站點,發佈站點。

 

他們相互獨立。也可以直接運行 mvn clean install site 運行所有這三套生命週期。

 

每套生命週期都由一組階段(Phase)組成,我們平時在命令行輸入的命令總會對應於一個特定的階段。比如,運行 mvn clean,這個 clean 是 Clean 生命週期的一個階段。有 Clean 生命週期,也有 clean 階段。

 

Clean聲明週期

①pre-clean 執行一些需要在clean之前完成的工作

②clean 移除所有上一次構建生成的文件

③post-clean 執行一些需要在clean 之後立刻完成的工作

 

Default聲明週期 【每次構建都會從頭構建到指定命令,比如mvn validate就只是運行到此,如果運行到compile,就從validate compile停止, 如果test 就是validate compile test】

Default 生命週期是 Maven 生命週期中最重要的一個,絕大部分工作都發生在這個生命週期中。這裏,只解釋一些比較重要和常用的階段:

validate

generate-sources

process-sources

generate-resources

process-resources 複製並處理資源文件,至目標目錄,準備打包。

compile 編譯項目的源代碼。

process-classes

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources 複製並處理資源文件,至目標測試目錄。

test-compile 編譯測試源代碼。

process-test-classes

test 使用合適的單元測試框架運行測試。這些測試代碼不會被打包或部署。

prepare-package

package 接受編譯好的代碼,打包成可發佈的格式,如 JAR。

pre-integration-test

integration-test

post-integration-test

verify

install 將包安裝至本地倉庫,以讓其它項目依賴。

deploy 將最終的包複製到遠程的倉庫,以讓其它開發人員與項目共享或部署到服務器上運行。

 

Site生命週期

①pre-site 執行一些需要在生成站點文檔之前完成的工作

②site 生成項目的站點文檔

③post-site 執行一些需要在生成站點文檔之後完成的工作,並且爲部署做準備

④site-deploy 將生成的站點文檔部署到特定的服務器上

 

這裏經常用到的是 site 階段和 site-deploy 階段,用以生成和發佈 Maven 站點,這可是 Maven 相當強大的功能,Manager 比較喜歡,文檔及統計數據自動生成,很好看。

 

插件和目標

Maven的核心僅僅定義了抽象的聲明週期,具體的任務都是交由插件完成的。

每個插件都實現多個功能,每個功能就是一個插件目標

Maven的生命週期與插件目標相互綁定,以完成某個具體的構建任務。

可以將目標看做“調用插件功能的命令”

 

例如:compile 就是插件 maven-compiler-plugin 的一個目標;pre-clean 是插件 maven-clean-plugin 的一個目標。

 

14、在Eclipse中使用Maven

Maven插件Eclipse已經內置。

 

Maven插件的設置: Window->Preferences->Maven

①installations : 指定Maven核心程序的位置。默認是插件自帶的Maven程序,改爲我們自己解壓的那個。

②user settings : 指定Maven核心程序中 conf/settings.xml 文件的位置,進而獲取本地倉庫的位置。

 

基本操作

①創建Maven版的Java工程

創建時勾選上 Create a simple project(skip archetype selection)

 

創建的Maven工程默認使用的是JDK1.5,打開Maven核心程序settings.xml文件,找到profiles標籤,加入如下配置,即可更改

<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版的Web工程

1、New Maven project時,Packaging 選擇 war

 

2、調整web目錄結構,在項目上點右鍵 -> properties->Project Facets -> 把Dynamic Web Module 勾選去掉,並Apply -> 將Dynamic Web Module 重新勾選 -> 點擊Further configuration available -> 修改 Content directory爲src/main/webapp -> Apply 即在Maven工程上生成動態Web目錄結構

3、新建jsp文件發現報錯:The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path

因爲缺少Tomcat 運行時環境

以Maven方式添加:

在pom.xml文件中添加

 

4、jsp寫入EL表達式時發現報錯:javax.servlet.jsp cannot be resolved to a type

將JSPAPI導入

在pom.xml文件中添加

 

注意:scope一定要是provided,不然jar包衝突,運行時會報空指針異常

 

③執行Maven命令

選中pom.xml 右鍵 Run As->Maven build…->Goals->輸入 compile ->點擊 run

 

15、繼承

現狀

Hello依賴的Junit:4.0

HelloFriend依賴的Junit:4.0

MakeFriends依賴的Junit:4.9

 

由於test範圍的依賴不能傳遞,所以必然會分散在各個模塊工程中,很容易造成版本不一致。

 

需求:統一管理各個模塊工程中對Junit依賴的版本。

 

解決思路:將Junit依賴統一提取到“父”工程中,在子工程中聲明Junit依賴是不指定版本,以父工程中統一設定的爲準。同時也便於修改。

 

操作步驟:

①創建一個Maven工程作爲父工程。注意:打包方式爲pom

②在子工程中聲明對父工程的引用

 

③將子工程的座標中與父工程座標中重複的內容刪除

 

④在父工程中統一管理Junit的依賴

 

⑤在子工程中刪除Junit依賴的版本號部分

 

注意:配置集成後,執行安裝命令時要先安裝父工程。

 

16、聚合

作用:一鍵安裝各個模塊工程。

配置方式:在一個“總的聚合工程”中配置各個參與聚合的模塊 【總的聚合工程:也就是我們統一管理junit版本的父工程(他能智能識別他們之間的依賴關係,正確的按照父-》子順序install)】

使用方式:在聚合工程的pom.xml 上點右鍵->run as->maven install

17、Maven_Web工程的自動部署

https://www.bilibili.com/video/av36557763?p=34 我暫時還沒有跑成功

在pom.xml 中添加如下配置:

 

  <!--配置當前工程構建過程中的特殊設置   -->

  

 <build>
    <finalName>AtguiguWeb</finalName>
    <!-- 配置構建過程中需要使用的插件 -->
    <plugins>
        <plugin>
            <!-- cargo是一家專門從事啓動Servlet容器的組織 -->
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.2.3</version>
            <!-- 針對插件進行的配置 -->
            <configuration>
                <!-- 配置當前系統中容器的位置 -->
                <container>
                    <containerId>tomcat6x</containerId>
                    <home>/Users/wangrui/Desktop/java/apache-tomcat-7.0.96</home>
                </container>
                <configuration>
                    <type>existing</type>
                    <home>/Users/wangrui/Desktop/java/apache-tomcat-7.0.96</home>
                    <!-- 如果Tomcat端口爲默認值8080則不必設置該屬性 -->
                    <properties>
                        <cargo.servlet.port>8989</cargo.servlet.port>
                    </properties>
                </configuration>
            </configuration>
            <!-- 配置插件在什麼情況下執行 -->
            <executions>  
                <execution>  
                    <id>cargo-run</id>
                    <!-- 生命週期的階段 -->  
                    <phase>install</phase>  
                    <goals>
                        <!-- 插件的目標 -->  
                        <goal>run</goal>  
                    </goals>  
                </execution>  
            </executions>
        </plugin>
     </plugins>
    </build>

執行mvn deploy 命令

 

18、Maven 酷站

我們可以到 http://mvnrepository.com/搜索需要的 jar 包的依賴信息。

 

發佈了21 篇原創文章 · 獲贊 36 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章