Maven----讓我們更輕松得管理我們的依賴

1.Maven介紹

Maven是一個基于項目對象模型(POM)的概念的純java開發(fā)的開源的項目管理工具。主要用來管理java項目忠售,進(jìn)行依賴管理(jar包管理卦方,能自動分析項目所需的依賴軟件包盼砍,并到Maven倉庫區(qū)下載)和項目構(gòu)建(項目編譯衬廷、打包、測試宁昭、部署)积仗。此外還能分塊開發(fā)寂曹,提高開發(fā)效率隆圆。

2.Maven下載

http://maven.apache.org/download.cgi

3. Maven安裝

3.1 解壓

注意: 解壓文件盡量不要放在含有中文或者特殊字符的目錄下渺氧。
解壓后侣背,有如下目錄:
bin:含有mvn運行的腳本
boot:含有plexus-classworlds類加載器框架,Maven 使用該框架加載自己的類庫。
conf:含有settings.xml配置文件
lib:含有Maven運行時所需要的java類庫

3.2 環(huán)境變量

maven依賴java環(huán)境厦取,所以要確保java環(huán)境已配置好 (maven-3.3+ 需要jdk7+)
maven本身有2個環(huán)境變量要配置:
MAVEN_HOME = maven的安裝目錄
PATH = maven的安裝目錄下的bin目錄

3.3 測試

查看maven版本信息:mvn -v

4.Maven的配置

maven的conf目錄下消别,有maven的配置文件 settings.xml
添加 <localRepository> 配置maven的 "本地倉庫" 位置,用于存放項目中的相關(guān)依賴(比如 所有jar)

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0                http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <localRepository>D:\Program Files\maven\myrepository</localRepository>

<profiles> 標(biāo)簽中 增加 一個 <profile> 標(biāo)簽岁经,限定maven項目默認(rèn)的jdk版本.
內(nèi)容如下:

<profiles>
    <!-- 在已有的profiles標(biāo)簽中添加profile標(biāo)簽 -->
    <profile>    
        <id>myjdk</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>
</profiles>
<!-- 讓增加的 profile生效 -->
<activeProfiles>
    <activeProfile>myjdk</activeProfile>
</activeProfiles>

5.倉庫

講完了maven的基本配置,我們來介紹一下倉庫的概念
Maven 倉庫
在 Maven 的術(shù)語中塘慕,倉庫是一個位置(place)图呢。
Maven 倉庫是項目中依賴的第三方庫蛤织,這個庫所在的位置叫做倉庫指蚜。
在 Maven 中摊鸡,任何一個依賴免猾、插件或者項目構(gòu)建的輸出掸刊,都可以稱之為構(gòu)件
Maven 倉庫能幫助我們存儲牌芋、管理構(gòu)件的地方躺屁。
操作模式:開發(fā)人員定義簡單的配置驯击,描述需要哪些依賴徊都,maven自動從倉庫中下載依賴(jar).

5.1 倉庫分類

repository1.jpg

repository2.jpg

5.2本地倉庫

1.在安裝 Maven 后并不會創(chuàng)建主之,第一次執(zhí)行 maven 命令時才創(chuàng)建槽奕。
2.Maven 所需要的構(gòu)件都是直接從本地倉庫獲取的粤攒。
如果本地倉庫沒有夯接,它會首先嘗試從遠(yuǎn)程倉庫下載構(gòu)件至本地倉庫,然后再使用本地倉庫的構(gòu)件凭需。
3.默認(rèn)情況下粒蜈,不管Linux還是 Windows枯怖,每個用戶在自己的用戶目錄下都有一個路徑名為
.m2/respository/的本地倉庫目錄度硝∪锍蹋可以在setttings.xml中修改藻茂。

5.3 遠(yuǎn)程倉庫

5.3.1中央倉庫

Maven 中央倉庫是由 Maven 社區(qū)提供的倉庫优俘,
其中包含了絕大多數(shù)流行的開源Java構(gòu)件帆焕。是默認(rèn)的遠(yuǎn)程倉庫视搏。(網(wǎng)站在國外浑娜,網(wǎng)速杠杠的筋遭,絕對超過5kb/s)
https://mvnrepository.com/ 可以搜索需要的依賴的相關(guān)信息(倉庫搜索服務(wù))
http://repo.maven.apache.org/maven2/ 中央倉庫地址

5.3.2 遠(yuǎn)程倉庫(自建的遠(yuǎn)程倉庫)

如果 Maven 在中央倉庫中也找不到依賴的文件,它會停止構(gòu)建過程并輸出錯誤信息到控制臺乖篷。 為避免這種情況豁鲤,Maven 提供了遠(yuǎn)程倉庫的概念琳骡,它是開發(fā)人員自己定制倉庫楣号。 比如aliyun倉庫(http://maven.aliyun.com/nexus/content/groups/public/
(我用阿里云主要是因為它快炫狱,畢竟是國內(nèi)的網(wǎng)站毕荐,但我搜索一般上mvn官網(wǎng)搜索憎亚,阿里云的搜索就是渣啊~~~~)

6. idea中使用Maven

6.1 在idea中關(guān)聯(lián)maven
idea_maven.jpg

6.2創(chuàng)建一個Maven項目


6.2.1 選擇骨架

骨架中包含一些初始化的項目結(jié)構(gòu)


create_prj1.jpg
6.2.2 指定項目名稱
create_prj2.jpg
6.2.3 設(shè)置Maven
create_prj3.jpg
6.2.4項目位置
create_prj4.jpg
6.2.5 項目結(jié)構(gòu)

1> src/main/java 存放源代碼,建包扳缕,放項目中代碼(service,dao,User,....)
2> src/main/resources 書寫配置文件躯舔,項目中的配置文件(jdbc.properties)
3> src/test/java 書寫測試代碼粥庄,項目中測試案例代碼
4> src/test/resources 書寫測試案例相關(guān)配置文件
5> 項目根/pom.xml (project object model) maven項目核心文件惜互,其中定義項目構(gòu)建方式(war包训堆,jar包坑鱼,默認(rèn)為jar包鲁沥,web項目用war包)黍析,聲明依賴等
注意:項目中的建包,建類奄抽,執(zhí)行逞度,都和普通項目無差異

create_prj5.jpg

6.3 導(dǎo)入依賴jar

建好項目后档泽,需要導(dǎo)入需要的jar馆匿,要通過【坐標(biāo)】(GAV)
1. 每個構(gòu)件都有自己的坐標(biāo)(標(biāo)識) = groupId + artifactId + version = 項目標(biāo)識 + 項目名 + 版本
2. 在maven項目中只需要配置坐標(biāo)渐北,maven便會自動加載對應(yīng)依賴恃锉。刪除坐標(biāo)則會移除依賴
3. jar包并不會導(dǎo)入到項目目錄中破托,只是maven幫助做了關(guān)聯(lián)炼团。但在打包部署項目時會攜帶對應(yīng)依賴
4. 而且瘟芝,如果導(dǎo)入了依賴A锌俱,而A中又依賴了B贸宏,則B會被自動加載吭练。

6.3.1 依賴的查找

依賴查找服務(wù):https://mvnrepository.com/ 鲫咽,獲得依賴的坐標(biāo)分尸,在maven項目中導(dǎo)入箩绍。(個人推薦每個人都準(zhǔn)備個個人依賴庫材蛛,打好注解方便使用)
1.mvn官網(wǎng)搜索

dependency1.jpg

2.進(jìn)入依賴詳情頁
dependency2.jpg

6.3.2 導(dǎo)入依賴

在項目的pom文件中
dependency4.jpg
6.3.3 同步依賴

引入坐標(biāo)(GAV)之后同步依賴卑吭,確認(rèn)導(dǎo)入


auto_import.jpg
6.3.4 依賴生命周期

項目中導(dǎo)入的依賴可以做生命周期的管理

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
    <!-- 生命周期 -->
    <scope>compile</scope>
</dependency>

**maven有生命周期如下:
1 compile:缺省值吐绵,適用于所有階段(測試己单,編譯纹笼,運行廷痘,打包)笋额,會隨著項目一起發(fā)布(被打包)
2 provided:類似compile兄猩,期望JDK枢冤、容器或使用者會提供這個依賴袁波。如servlet.jar參與測試谒拴,編譯梅屉,不會被打包
3 runtime:只在運行時使用坯汤,如 jdbc6.jar惰聂,適用運行和測試階段,會被一起發(fā)布
4 test:只在測試時使用杆故,用于編譯和運行測試代碼处铛,如 junit.jar撤蟆,不會隨項目發(fā)布
5 system:類似provided家肯,但Maven不會在Repository中查找它讨衣,要在本地磁盤目錄中查找,參與編譯反镇,測試愿险,打包辆亏,運行扮叨。

6.4 創(chuàng)建Web項目

6.4.1 選擇web骨架
web1.jpg
6.4.2 定義項目坐標(biāo)
web2.jpg
6.4.3 選擇maven
web3.jpg
6.4.4 選擇項目磁盤位置
web4.jpg
6.4.5 maven-web項目結(jié)構(gòu)
web5.jpg
6.4.6 導(dǎo)入依賴

maven-web項目中沒有攜帶servlet相關(guān)的依賴狸捅,所以需要導(dǎo)入尘喝。
否則,servlet相關(guān)的組件不能使用置吓,jsp也不能使用

7. idea-tomcat

7.1 編輯運行環(huán)境
tomcat1.jpg
7.2 新增tomcat-server
tomcat2.jpg
7.3 選擇tomcat位置
tomcat3.jpg
7.4 tomcat細(xì)節(jié)
tomcat4.jpg

8. 部署web項目

8.1 新增部署
deploy.jpg
8.2 增加artifacts

如下友题,項目部署有兩種選擇:war和war-exploded
war:將項目實際部署到tomcat的web-apps目錄中.
war-exploded:并不會真正部署到tomcat的web-apps目錄度宦,tomcat直接訪問項目內(nèi)容(我們選這個)

deploy2.jpg

部署.jpg

8.3 設(shè)置訪問路徑
deploy3.jpg
8.4 啟動tomcat
deploy4.jpg

deploy5.jpg

9.Aliyun倉庫(必需)

中央倉庫在國外凫海,下載速度很慢行贪,國內(nèi)的aliyun倉庫是一款很優(yōu)秀的maven倉庫建瘫。強(qiáng)烈建議使用
在setting.xml文件中配置如下信息

<mirrors>
    <mirror>
        <id>aliyun</id>  
        <!-- 中心倉庫的 mirror(鏡像) -->
        <mirrorOf>central</mirrorOf>    
        <name>Nexus aliyun</name>
        <!-- aliyun倉庫地址 以后所有要指向中心倉庫的請求殷蛇,都由aliyun倉庫接替-->
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
    </mirror>
</mirrors>

10.maven特性

10.1 傳遞性

10.1 傳遞性

所謂傳遞性粒梦,是指匀们,在項目中導(dǎo)入了依賴A泄朴,而A內(nèi)部依賴了B祖灰,則A會自動觸發(fā)B也被導(dǎo)入項目

好處:沒必要導(dǎo)入所有依賴在項目中,傳遞性會自動導(dǎo)入一些依賴。簡化依賴導(dǎo)入管理
壞處:jar沖突

10.1.1 jar沖突
<!-- 沖突示例 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.3.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.8.3</version>
</dependency>
jar_conflict.jpg

jar沖突:A依賴B B依賴C和d-1.0 c依賴d-2.0陌兑。則此時導(dǎo)入A依賴饿凛,那么項目中會采用d-1.0 還是 d-2.0?
maven默認(rèn)的選擇原則是“最短路徑”
1 d-1.0的路徑 A->B->d-1.0
2 d-2.0的路徑 A->B->C->d-2.0 則最終選擇的是d-1.0 ( 如果路徑等長涧窒,則先聲明的優(yōu)先 )

解決方案
默認(rèn)的選擇原則明顯是不能符合實際的需求的纠吴,所以有其他設(shè)置可以改變默認(rèn)原則
1> 排除原則:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.6.RELEASE</version>
<exclusions>
   <!-- 排除一個依賴戴已,則此依賴不會被spring-context-suport傳遞導(dǎo)入 -->
   <exclusion>
       <groupId>org.springframework</groupId>
       <artifactId>spring-beans</artifactId>
   </exclusion>
</exclusions>
</dependency>

2> 明確定義:直接定義<dependency> ,則根據(jù)最短路徑糖儡,設(shè)置明確版本
3> 在父項目中定義,則子項目中在傳遞依賴時會以父項目中的聲明為準(zhǔn)金闽。

10.1.2 傳遞依賴范圍

前置概念:
項目A中 依賴 B庫 ,B庫 依賴C庫呐矾;
則A對B是第一直接依賴蜒犯,B對C是第二直接依賴罚随,A對C是傳遞性依賴淘菩。
如果第一直接依賴范圍是:compile狭郑,第二直接依賴范圍:compile翰萨,則傳遞性依賴范圍就是:compile
則亩鬼,傳遞性依賴的范圍取決于 第一和第二直接依賴雳锋。

compile ( 測玷过、編、運) runtime( 測咆瘟、運) provide( 測飞蛹,編) test( 測 )
complie compile runtime - -
runtime runtime runtime - -
provide provide provide provide -
test test test - -

如上表格:第一列是第一直接依賴范圍卧檐,第一行是第二直接依賴霉囚,交叉的格子是傳遞性依賴范圍。

解釋第一行:第一compile盅粪,第二compile票顾,則傳遞compile奠骄;

? 第二runtime含鳞,則傳遞runtime; (B運行時需要C民晒,所以A也要保證運行時有C)

? 第二provide潜必,則不加載傳遞依賴磁滚;( A不需要測試B,也不需要編譯B晒他,所以不需要C)

? 第二test陨仅,則不加載穿刺依賴灼伤;(A不需要測試B狐赡,所以不需要C)

其他行,也是同樣的邏輯關(guān)系发皿。

結(jié)論:A依賴B穴墅,B依賴C ==> A中不一定會加載C皇钞;即使加載C夹界,C的scope也會有變動可柿。

10.2 繼承
  • 多個maven項目間難免有重復(fù)的pom配置复斥,重復(fù)的配置沒必要重復(fù)寫目锭,maven提供了pom的父子集成機(jī)制痢虹,類似java的父子類。將共用的pom配置定義在父pom中糜值,自pom繼承后就等價持有了父pom中的內(nèi)容瓢阴。實現(xiàn)pom復(fù)用荣恐。
  • 項目中的諸多依賴,需要統(tǒng)一管理版本累贤,不建議每個開發(fā)者隨意指定版本叠穆。可以在父項目中聲明版本信息,子項目延用即可
10.2.1 定義父項目

定義空白的maven項目(不用寫任何代碼臼膏,只用他的pom文件)

extends.jpg

注意:子項目中如果明確定義了版本硼被,則父項目中的聲明會失效嚷硫。所以父項目中聲明的版本脆贵,子項目中不允許再定義卖氨。

10.2.2 子項目繼承

子項目pom中繼承父pom


extends2.jpg
10.3 聚合

一個項目(project),可以分為多個模塊(module)系吭,使得項目更加層次清晰贫导,利于管理。利于模塊復(fù)用。

模塊的劃分掀亩,常用的方式之一:基于MVC劃分模塊抬驴,進(jìn)一步樹立項目層次,對于大型項目尤為實用按傅。

每個模塊都是一個單獨的maven項目狂秦,由一個父項目來做聚合牛柒。
模塊之間可以互相依賴。
對父項目做編譯虑瀑,清理扔水,打包等行為會傳播給所有模塊主届。

10.3.1 創(chuàng)建父模塊

可以基于 “quick-start”骨架建立項目绘闷,或建立一個空白項目均可。
父模塊必須是pom打包!再菊!泛豪,其他沒特殊要求。

聚合1.jpg

10.3.2 創(chuàng)建子模塊

父模塊作為:Project,再建項目作為:Module
注意:dao和service模塊打包格式為jar,web模塊打包格式為war


  1. 在父模塊上 "右鍵", 為其新建 Module


    聚合2.jpg

2. Module的創(chuàng)建盖文,選擇骨架時,按需選擇即可;如下填寫Module的項目名即可

聚合3.jpg


3. 創(chuàng)建完畢后,如下

聚合4.jpg


4. 重復(fù)如上過程,再多創(chuàng)建幾個Module

聚合5.jpg


5. 父項目的pom套腹,已經(jīng)發(fā)生了改變,<moludels>標(biāo)簽即在做多模塊聚合

聚合6.jpg

10.3.3 父項目中定義版本管理
<!-- 共用的依賴定義 -->
<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>
    ....
</dependencies>
<!-- 依賴版本統(tǒng)一管理 -->
<dependencyManagement>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.3.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>4.3.6.RELEASE</version>
    </dependency>
    ....
</dependencyManagement>
  • 統(tǒng)一管理:

    • 如上可以避免在每個子模塊中都聲明版本號瓦糕,這樣想升級或者切換到另一個版本時圣勒,只需要在父模塊里更新吁峻,不需要任何一個子模塊的修改帮匾;
  • 自定義:

    • 如果某個子模塊需要另外一個版本號時螺句,只需要在dependencies中聲明一個版本號即可佣蓉。子模塊就會使用子模塊聲明的版本號义辕,不繼承于父模塊版本號傀蚌。

在做依賴管理時窜醉,也有時會在父項目中不做依賴管理琅催,而是明確導(dǎo)入所有依賴杰捂,子模塊直接繼承后就擁有哪些依賴。service模塊只需要單獨導(dǎo)入dao湿弦,web模塊只需要單獨導(dǎo)入service班利。

10.3.4 子模塊中定義內(nèi)容

各個模塊中彻消,分別定義對應(yīng)的依賴央勒、代碼井濒、配置者甲。
子模塊中需要的配置文件刽辙,可以由子模塊持有朦乏,也可以統(tǒng)一交給web模塊持有。
來自不同模塊的組件間的注入,編碼不變。


dao模塊议泵,定義所有DAO厢汹。其中的pojo也可以分為一個單獨的模塊搭综。

聚合9.jpg


service模塊奋姿,定義所有Service類寓免。需要導(dǎo)入dao模塊,進(jìn)而注入其中的DAO組件

聚合10.jpg


web模塊踩寇,定義所有的Controller類鼠冕,需要導(dǎo)入service模塊(同上)

聚合11.jpg

10.3.5 測試

如果dao模塊自己持有配置叉趣,則可以在dao模塊進(jìn)行測試梢什。反之可以將dao模塊導(dǎo)入到web模塊,在web模塊中測試dao僻他。
Service測試同理翩瓜。
web模塊的測試,可以直接將web模塊部署到tomcat即可測試夸楣。

10.3.6 部署

在父模塊所在目錄下幢泼,直接執(zhí)行:mvn package, 即可完成所有模塊的打包孵班,且web模塊的war包中會包含dao房午,service批狐,pojo模塊的jar食零。

直接部署web模塊的war即可百宇。

10.3.7 相關(guān)指令
  • 測試憋肖,對父模塊做 打包操作
    mvn package
  • 測試,對父模塊做 清理并編譯
    mvn clean compile
  • 測試,對父模塊做 清理并打包
    mvn clean package
  • 注意:對父模塊做的操作都會同步到每個模塊上。

11. 私服

私服是架設(shè)在局域網(wǎng)的一種特殊的遠(yuǎn)程倉庫,目的是代理遠(yuǎn)程倉庫及部署第三方構(gòu)件晴氨。
有了私服之后瘪贱,當(dāng) Maven 需要下載構(gòu)件時嚣州,直接請求私服佳吞,私服上存在則下載到本地倉庫滥嘴;否則足绅,私服請求外部的遠(yuǎn)程倉庫捷绑,將構(gòu)件下載到私服,再提供給本地倉庫下載氢妈。
私服可以解決在企業(yè)做開發(fā)時每次需要的jar包都要在中心倉庫下載,且每次下載完只能被自己使用,不能被其他開發(fā)人員使用
所謂私服就是一個服務(wù)器,但是不是本地層面的,是公司層面的,公司中所有的開發(fā)人員都在使用同一個私服

私服1.png

私服2.png

我們可以使用專門的 Maven 倉庫管理軟件來搭建私服粹污,比如:Apache ArchivaArtifactory首量,Sonatype Nexus壮吩。這里我們使用 Sonatype Nexus

11.1 Nexus安裝

  • 下載nexus-2.x-bundle.zip,解壓即可
  • 解壓后在bin目錄中執(zhí)行:nexus install 在系統(tǒng)中安裝nexus服務(wù)
    nexus uninstall 卸載nexus服務(wù)
    nexus start 啟動服務(wù)
    nexus stop 停止服務(wù)
  • 訪問私服:http://localhost:8081/nexus/
  • 登錄私服:admin/admin123


    私服3.jpg

11.2 Nexus登錄

私服_login.jpg

私服_login2.jpg

11.3 倉庫列表

group:包含多個倉庫,通過group庫的地址可以從包含的多個倉庫中查找構(gòu)件 hosted: 私服 服務(wù)器本地的倉庫加缘,其中存儲諸多構(gòu)件鸭叙。 3rd存放中央倉庫沒有的 ,如ojdbc.jar拣宏,可以上傳到私服的該庫中沈贝。 Releases存放項目的穩(wěn)定發(fā)布版本,一個模塊做完后如果需要共享給他人勋乾,可以上傳到私服的該庫宋下。 Snapshots對應(yīng)不穩(wěn)定的發(fā)布版本 proxy:代理倉庫,其會關(guān)聯(lián)一個遠(yuǎn)程倉庫, 比如中央倉庫辑莫,aliyun倉庫学歧,向該倉庫查找構(gòu)件時,如果沒有會從其關(guān)聯(lián)的倉庫中下載各吨。
私服_list.jpg

11.4 導(dǎo)入第三方j(luò)ar到私服

有些jar在中心庫中是沒有的枝笨,比如oracle的數(shù)據(jù)庫驅(qū)動jar:ojdb6.jar. 可以自己下載jar,然后上傳到私服中揭蜒。
此種構(gòu)件横浑,我們建議放在 "3rd party" 倉庫中 ( 存放第三方構(gòu)件 )

私服_addjar1.jpg

私服_addjar2.jpg

私服_addjar3.jpg

私服_addjar4.jpg

11.5 maven配置私服

在maven中配置私服,使得maven可以從私服上獲取構(gòu)件

11.5.1 倉庫組

而此時就有問題忌锯,私服中有很多倉庫伪嫁,每個倉庫都有自己的url,則項目中配置哪個倉庫呢 ?
私服中有一個倉庫組偶垮,組中包含多個倉庫张咳,可以指定倉庫組的url,即可從多個倉庫中獲取構(gòu)件

私服_deploy2.jpg

11.5.2 maven關(guān)聯(lián)私服

配置settings.xml似舵,設(shè)置私服地址脚猾、認(rèn)證等信息
配置私服 username/password

私服_deploy1.jpg

More Actions配置私服為maven的遠(yuǎn)程倉庫,注意:【此處的repository的id要和 上圖中server的id保持一致砚哗,才可以在私服認(rèn)證通過】
私服_deploy3.jpg

More Actions使profile配置生效
私服_deploy4.jpg

至此龙助,maven項目中需要依賴時,maven會從私服中下載

11.6 maven項目部署到私服

在項目的pom中配置部署倉庫位置:
執(zhí)行 :mvn deploy 即可將項目部署到私服對應(yīng)的倉庫中,此時項目中的打包方式多為jar

私服_deploy5.jpg

注意:如上的 repositoryid 依然是要和settings.xml中配置的 server 中的 id 對應(yīng)才能通過私服的認(rèn)證

12. mave常用指令

mvn compile 編譯
mvn clean 清除上次編譯的內(nèi)容
mvn clean compile 清除并編譯
mvn package 打包

13. Resources

Resources插件提鸟,負(fù)責(zé)將配置文件復(fù)制到編譯目錄中军援。兩種配置文件,main-resources称勋、test-resources
Maven默認(rèn)只關(guān)注 resources目錄下的配置文件胸哥,其他目錄下的配置文件會被忽略。

13.1 增加資源目錄

如果有配置文件不在 resources目錄下赡鲜,則需要額外配置:

<build>
    <resources>
        <!-- src/main/java目錄也是一個資源目錄空厌,其中的配置文件也會被復(fù)制到編譯目錄 -->
        <resource>
            <directory>src/main/java</directory>
        </resource>
    </resources>
</build>
13.2 排除或包含

如果有資源目錄中有需要排除的配置文件,可以如下設(shè)置:

<resource>
    <directory>src/main/java</directory>
    <!--**代表src/main/java下的子目錄或子目錄的子目錄..
        *.txt 代表所有txt文件银酬。
        所有文件可以用:*.* 或 * 
        【排除所有txt文件嘲更,其他文件都會被復(fù)制】
    -->
    <excludes>
        <exclude>**/*.txt</exclude>
    </excludes>
</resource>
<resource>
    <directory>src/main/java</directory>
    <!--**代表src/main/java下的子目錄或子目錄的子目錄..
        *.txt 代表所有txt文件。
        所有文件可以用:*.* 或 * 
        【復(fù)制所有txt文件揩瞪,其他文件都會被忽略】
    -->
    <includes>
        <include>**/*.txt</include>
    </includes>
</resource>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赋朦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子壮韭,更是在濱河造成了極大的恐慌北发,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喷屋,死亡現(xiàn)場離奇詭異,居然都是意外死亡瞭恰,警方通過查閱死者的電腦和手機(jī)屯曹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惊畏,“玉大人恶耽,你說我怎么就攤上這事⊙掌簦” “怎么了偷俭?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缰盏。 經(jīng)常有香客問我涌萤,道長,這世上最難降的妖魔是什么口猜? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任负溪,我火速辦了婚禮,結(jié)果婚禮上济炎,老公的妹妹穿的比我還像新娘川抡。我一直安慰自己,他們只是感情好须尚,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布崖堤。 她就那樣靜靜地躺著侍咱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪密幔。 梳的紋絲不亂的頭發(fā)上楔脯,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音老玛,去河邊找鬼淤年。 笑死,一個胖子當(dāng)著我的面吹牛蜡豹,可吹牛的內(nèi)容都是我干的麸粮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼镜廉,長吁一口氣:“原來是場噩夢啊……” “哼弄诲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娇唯,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤齐遵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后塔插,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梗摇,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年想许,在試婚紗的時候發(fā)現(xiàn)自己被綠了伶授。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡流纹,死狀恐怖糜烹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情漱凝,我是刑警寧澤疮蹦,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站茸炒,受9級特大地震影響愕乎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扣典,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一妆毕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贮尖,春花似錦笛粘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽润努。三九已至,卻和暖如春示括,著一層夾襖步出監(jiān)牢的瞬間铺浇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工垛膝, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留鳍侣,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓吼拥,卻偏偏與公主長得像倚聚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凿可,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355