Maven?自動(dòng)化構(gòu)建的實(shí)現(xiàn)示例
一、Maven:是一款服務(wù)于 Java平臺(tái)的自動(dòng)化構(gòu)建工具
【1】Maven可以將一個(gè)項(xiàng)目按模塊劃分成不同的工程,利于分工協(xié)作;
【2】Maven可以將 jar包保存在自己的中央“倉(cāng)庫(kù)”中進(jìn)行統(tǒng)一管理,有需要使用的工程引用這個(gè)文件接口即可,不需要真的將 ja包復(fù)制過(guò)來(lái)(解決同樣的 jar包文件重復(fù)出現(xiàn)在不同的項(xiàng)目工程中,一方面浪費(fèi)存儲(chǔ)空間,另外也讓工程比較臃腫);
【3】可以自動(dòng)導(dǎo)入依賴的相關(guān)jar包,之前需要自己手動(dòng)導(dǎo)入相關(guān) jar包;
【4】Tip:如下表示運(yùn)行時(shí)環(huán)境,主要存儲(chǔ) String等類似對(duì)象,其實(shí)只是一組 jar包的引用;

二、安裝 Maven:配置環(huán)境變量即可
【1】創(chuàng)建 MAVNE_HOME環(huán)境變量

【2】在 path 中添加 Maven 的 bin 目錄:驗(yàn)證(mvn -v)命令查看 maven 版本

三、自定義Maven倉(cāng)庫(kù)
修改解壓目錄下的conf/setting.xml文件:

四、命令
【1】maven compile:編譯main文件,生成class文件位于 target 目錄中。
【2】maven package:對(duì)主程序進(jìn)行打包,生成文件在 target 目錄中。
【3】maven clean:清理 target 目錄下文件。
POM:project object model 項(xiàng)目對(duì)象模型。對(duì)于 Maven 工程是核心配置文件,與構(gòu)建過(guò)程相關(guān)的一切設(shè)置都是在這個(gè)文件中進(jìn)行設(shè)置。
五、坐標(biāo):使用下面三個(gè)向量在倉(cāng)庫(kù)中唯一定位一個(gè)Maven工程
【1】groupid: 公司或組織域名倒序+項(xiàng)目名
【2】artifactid: 模塊名稱Hello
【3】version: 版本
<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
六、 倉(cāng)庫(kù)的分類
【1】本地倉(cāng)庫(kù):當(dāng)前電腦上部署的倉(cāng)庫(kù)目錄,為當(dāng)前電腦上所有的Maven工程服務(wù)。
【2】遠(yuǎn)程倉(cāng)庫(kù):①、私 服:搭建在當(dāng)前局域網(wǎng)下,為當(dāng)前局域網(wǎng)網(wǎng)范圍內(nèi)的所有Maven工程服務(wù)。②、中央倉(cāng)庫(kù):架設(shè)在Internet上,為全世界所有Maven工程服務(wù)。③、中央倉(cāng)庫(kù)的鏡像:為了分擔(dān)中央倉(cāng)庫(kù)的壓力,提升用戶訪問(wèn)的速度。
七、依賴:Maven解析依賴信息時(shí),會(huì)到本地倉(cāng)庫(kù)中找被依賴的jar包。
對(duì)于我們開(kāi)發(fā)的工程需要使用 install 命令安裝后就可以進(jìn)入倉(cāng)庫(kù),生成 jar 包等文件。
<dependency>
<groupId>com.shidaiyintong</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
依賴具有傳遞性: 當(dāng)父類依賴了 jar 包后,子類 Maven Dependencies 也會(huì)自動(dòng)添加,但非 compile 范圍的 jar 包不能傳遞。
依賴的排除性:使用 exlutions 標(biāo)簽
<exclusions>
<exclution>
<groupId>xxxx</groupId>
<artifactId>xxx</artifactId>
</exclution>
</exclutions>
<exclusions>
<exclution>
<groupId>xxxx</groupId>
<artifactId>xxx</artifactId>
</exclution>
</exclutions>
依賴的原則: 解決 jar 包沖突問(wèn)題,就近原則。相同路徑取先聲明者優(yōu)先,指 dependency標(biāo)簽的聲明順序。
依賴的范圍:
【1】compile: 對(duì)主程序、測(cè)試程序可見(jiàn),主程序參與打包、測(cè)試程序不參與打包
【2】test: 對(duì)主程序無(wú)效,對(duì)測(cè)試程序有效,不參與打包

【3】provided: 主要用于開(kāi)發(fā),測(cè)試有效。不參與打包(不部署),防止沖突(特別是一些服務(wù)器的jar包)。 點(diǎn)擊并拖拽以移動(dòng)?點(diǎn)擊并拖拽以移動(dòng)?

八、生命周期
? 清理、編譯、測(cè)試、報(bào)告、打包、安裝、部署、運(yùn)行。
? 特性: 當(dāng)執(zhí)行某一階段時(shí),都是從第一階段開(kāi)始執(zhí)行。
九、利用 MyEclipse 中使用 Maven
【1】使用內(nèi)置 Maven 但是需要設(shè)置如下(不建議使用自帶的 Maven 程序,不穩(wěn)定。使用我們自己解壓的文件)
Window—>Preferences—>Maven4MyEclise—>Installations—>Add

【2】設(shè)置 User Settings: 指定 conf/settings.xml 的位置,進(jìn)而獲取本地倉(cāng)庫(kù)的位置,如下:

【3】修改每次創(chuàng)建 Maven 項(xiàng)目后,JDK的版本,需要在 settings.xml 文件中 標(biāo)簽內(nèi)添加如下:
<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>
【4】Maven 中執(zhí)行命令的方式:pom.xml—>右鍵—>Maven build…—>Golas(compile)等。
【5】Maven 創(chuàng)建一個(gè) Web 工程: 創(chuàng)建的時(shí)候 packing:war 包,創(chuàng)建完后,會(huì)發(fā)現(xiàn)與我們平常的 web 工程不太一樣,缺少web.xml等文件。添加方式如下:選中工程右鍵進(jìn)入 properties 屬性—> Project Facets 去掉 Dynamic Web Model再勾上Dynamic Web Model,會(huì)出現(xiàn)超鏈接如下:

【6】在 Content directory 中輸入要存放標(biāo)準(zhǔn)Web工程生成的文件的目錄

【7】最終目錄如下:

【8】Maven工程導(dǎo)入Existing Maven Project 沒(méi)有 cope 功能,因此要將Maven工程放入 workspace 目錄中,進(jìn)行導(dǎo)入。在Maven工程中主要通過(guò) pom.xml 文件進(jìn)行識(shí)別。普通Java文件導(dǎo)入時(shí),有 cope 功能,也能夠?qū)?Maven 工程,但必須是Eclipse 工程,工程中含有 .clsspath/.project 文件為Eclipse工程。
【9】自定義版本標(biāo)簽: 方便版本升級(jí)等問(wèn)題的解決,凡是需要聲明后統(tǒng)一使用的場(chǎng)合都可以使用, 使用的時(shí)候只需要在 中輸入 ${atguigu.spring.version} 即可
<properties> <atguigu.spring.verion>4.0.0.RELEASE</atguigu.spring.version> </peoperties>
十、繼承
對(duì)依賴范圍: test、provide 的同一 jar 包的版本的管理。
解決思想: 將此 jar包統(tǒng)一提取到“父”工程中,在子工程中聲明此 jar包依賴時(shí)不指定版本號(hào),以父工程中統(tǒng)一設(shè)定的為準(zhǔn),同時(shí)也便于修改。
操作步驟:
【1】創(chuàng)建一個(gè) Maven 工程作為父工程,打包方式為 pom
【2】在子工程中聲明對(duì)父工程的引用
【3】將子工程中坐標(biāo)與父工程坐標(biāo)相同的內(nèi)容刪掉
【4】在父工程中統(tǒng)一 jar包依賴
【5】在自工程中刪除jar包依賴的版本號(hào)
子類找干爹配置:
<parent> <!--父元素的pom地址--> <relativePath>../Parent/pom.xml</relativePath><!--相對(duì)地址--> </parent>
父類統(tǒng)一管理配置: 配置集成后,執(zhí)行安裝命令 install 時(shí),要先安裝 parent,按順序 install,解決辦法,聚合即可。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit<artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependencies>
</dependencyManagement>
十一、聚合:一鍵安裝各個(gè)模塊工程
【1】配置方式: 在一個(gè)工程中配置,例如 parent 工程中:直接install parent項(xiàng)目就安裝了全部工程,會(huì)自動(dòng)檢測(cè)順序。
【2】查找 jar包的 pom文件: http://mvnrepository.com
<modules> <module>../Hello</module> <module>../HelloFriend</module> </modules>
到此這篇關(guān)于Maven 自動(dòng)化構(gòu)建的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Maven 自動(dòng)化構(gòu)建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JDK8的lambda方式List轉(zhuǎn)Map的操作方法
account是一個(gè)返回本身的lambda表達(dá)式,其實(shí)還可以使用Function接口中的一個(gè)默認(rèn)方法代替,使整個(gè)方法更簡(jiǎn)潔優(yōu)雅,這篇文章主要介紹了JDK8的lambda方式List轉(zhuǎn)Map,需要的朋友可以參考下2022-07-07
Spring實(shí)戰(zhàn)之容器中的工程Bean用法示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之容器中的工程Bean用法,結(jié)合實(shí)例形式分析了Sring框架容器中的工程Bean相關(guān)配置、使用操作技巧,需要的朋友可以參考下2019-11-11
Java實(shí)現(xiàn)掃雷游戲詳細(xì)代碼講解
windows自帶的游戲《掃雷》是陪伴了無(wú)數(shù)人的經(jīng)典游戲,本文將利用Java語(yǔ)言實(shí)現(xiàn)這一經(jīng)典的游戲,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下2022-05-05
SpringBoot日志進(jìn)階實(shí)戰(zhàn)之Logback配置經(jīng)驗(yàn)和方法
本文給大家介紹在SpringBoot中使用Logback配置日志的經(jīng)驗(yàn)和方法,并提供了詳細(xì)的代碼示例和解釋,包括:滾動(dòng)文件、異步日志記錄、動(dòng)態(tài)指定屬性、日志級(jí)別、配置文件等常用功能,覆蓋日常Logback配置開(kāi)發(fā)90%的知識(shí)點(diǎn),感興趣的朋友跟隨小編一起看看吧2023-06-06
Java 序列化詳解及簡(jiǎn)單實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了 Java 序列化詳解及簡(jiǎn)單實(shí)現(xiàn)實(shí)例的相關(guān)資料,使用序列化目的:以某種存儲(chǔ)形式使自定義對(duì)象持久化,將對(duì)象從一個(gè)地方傳遞到另一個(gè)地方,需要的朋友可以參考下2017-03-03
實(shí)例講解分布式緩存軟件Memcached的Java客戶端使用
這篇文章主要介紹了分布式緩存軟件Memcached的Java客戶端使用,Memcached在GitHub上開(kāi)源,作者用其Windows平臺(tái)下的版本進(jìn)行演示,需要的朋友可以參考下2016-01-01

