Maven?自動化構(gòu)建的實現(xiàn)示例
一、Maven:是一款服務(wù)于 Java平臺的自動化構(gòu)建工具
【1】Maven可以將一個項目按模塊劃分成不同的工程,利于分工協(xié)作;
【2】Maven可以將 jar包保存在自己的中央“倉庫”中進(jìn)行統(tǒng)一管理,有需要使用的工程引用這個文件接口即可,不需要真的將 ja包復(fù)制過來(解決同樣的 jar包文件重復(fù)出現(xiàn)在不同的項目工程中,一方面浪費存儲空間,另外也讓工程比較臃腫);
【3】可以自動導(dǎo)入依賴的相關(guān)jar包,之前需要自己手動導(dǎo)入相關(guān) jar包;
【4】Tip:如下表示運行時環(huán)境,主要存儲 String等類似對象,其實只是一組 jar包的引用;
二、安裝 Maven:配置環(huán)境變量即可
【1】創(chuàng)建 MAVNE_HOME環(huán)境變量
【2】在 path 中添加 Maven 的 bin 目錄:驗證(mvn -v)命令查看 maven 版本
三、自定義Maven倉庫
修改解壓目錄下的conf/setting.xml文件:
四、命令
【1】maven compile:編譯main文件,生成class文件位于 target 目錄中。
【2】maven package:對主程序進(jìn)行打包,生成文件在 target 目錄中。
【3】maven clean:清理 target 目錄下文件。
POM:project object model 項目對象模型。對于 Maven 工程是核心配置文件,與構(gòu)建過程相關(guān)的一切設(shè)置都是在這個文件中進(jìn)行設(shè)置。
五、坐標(biāo):使用下面三個向量在倉庫中唯一定位一個Maven工程
【1】groupid: 公司或組織域名倒序+項目名
【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
六、 倉庫的分類
【1】本地倉庫:當(dāng)前電腦上部署的倉庫目錄,為當(dāng)前電腦上所有的Maven工程服務(wù)。
【2】遠(yuǎn)程倉庫:①、私 服:搭建在當(dāng)前局域網(wǎng)下,為當(dāng)前局域網(wǎng)網(wǎng)范圍內(nèi)的所有Maven工程服務(wù)。②、中央倉庫:架設(shè)在Internet上,為全世界所有Maven工程服務(wù)。③、中央倉庫的鏡像:為了分擔(dān)中央倉庫的壓力,提升用戶訪問的速度。
七、依賴:Maven解析依賴信息時,會到本地倉庫中找被依賴的jar包。
對于我們開發(fā)的工程需要使用 install 命令安裝后就可以進(jìn)入倉庫,生成 jar 包等文件。
<dependency> <groupId>com.shidaiyintong</groupId> <artifactId>Hello</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency>
依賴具有傳遞性: 當(dāng)父類依賴了 jar 包后,子類 Maven Dependencies 也會自動添加,但非 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 包沖突問題,就近原則。相同路徑取先聲明者優(yōu)先,指 dependency標(biāo)簽的聲明順序。
依賴的范圍:
【1】compile: 對主程序、測試程序可見,主程序參與打包、測試程序不參與打包
【2】test: 對主程序無效,對測試程序有效,不參與打包
【3】provided: 主要用于開發(fā),測試有效。不參與打包(不部署),防止沖突(特別是一些服務(wù)器的jar包)。 點擊并拖拽以移動?點擊并拖拽以移動?
八、生命周期
? 清理、編譯、測試、報告、打包、安裝、部署、運行。
? 特性: 當(dāng)執(zhí)行某一階段時,都是從第一階段開始執(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)而獲取本地倉庫的位置,如下:
【3】修改每次創(chuàng)建 Maven 項目后,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)建一個 Web 工程: 創(chuàng)建的時候 packing:war 包,創(chuàng)建完后,會發(fā)現(xiàn)與我們平常的 web 工程不太一樣,缺少web.xml等文件。添加方式如下:選中工程右鍵進(jìn)入 properties 屬性—> Project Facets 去掉 Dynamic Web Model再勾上Dynamic Web Model,會出現(xiàn)超鏈接如下:
【6】在 Content directory 中輸入要存放標(biāo)準(zhǔn)Web工程生成的文件的目錄
【7】最終目錄如下:
【8】Maven工程導(dǎo)入Existing Maven Project 沒有 cope 功能,因此要將Maven工程放入 workspace 目錄中,進(jìn)行導(dǎo)入。在Maven工程中主要通過 pom.xml 文件進(jìn)行識別。普通Java文件導(dǎo)入時,有 cope 功能,也能夠?qū)?Maven 工程,但必須是Eclipse 工程,工程中含有 .clsspath/.project 文件為Eclipse工程。
【9】自定義版本標(biāo)簽: 方便版本升級等問題的解決,凡是需要聲明后統(tǒng)一使用的場合都可以使用, 使用的時候只需要在 中輸入 ${atguigu.spring.version} 即可
<properties> <atguigu.spring.verion>4.0.0.RELEASE</atguigu.spring.version> </peoperties>
十、繼承
對依賴范圍: test、provide 的同一 jar 包的版本的管理。
解決思想: 將此 jar包統(tǒng)一提取到“父”工程中,在子工程中聲明此 jar包依賴時不指定版本號,以父工程中統(tǒng)一設(shè)定的為準(zhǔn),同時也便于修改。
操作步驟:
【1】創(chuàng)建一個 Maven 工程作為父工程,打包方式為 pom
【2】在子工程中聲明對父工程的引用
【3】將子工程中坐標(biāo)與父工程坐標(biāo)相同的內(nèi)容刪掉
【4】在父工程中統(tǒng)一 jar包依賴
【5】在自工程中刪除jar包依賴的版本號
子類找干爹配置:
<parent> <!--父元素的pom地址--> <relativePath>../Parent/pom.xml</relativePath><!--相對地址--> </parent>
父類統(tǒng)一管理配置: 配置集成后,執(zhí)行安裝命令 install 時,要先安裝 parent,按順序 install,解決辦法,聚合即可。
<dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit<artifactId> <version>4.0</version> <scope>test</scope> </dependency> <dependencies> </dependencyManagement>
十一、聚合:一鍵安裝各個模塊工程
【1】配置方式: 在一個工程中配置,例如 parent 工程中:直接install parent項目就安裝了全部工程,會自動檢測順序。
【2】查找 jar包的 pom文件: http://mvnrepository.com
<modules> <module>../Hello</module> <module>../HelloFriend</module> </modules>
到此這篇關(guān)于Maven 自動化構(gòu)建的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Maven 自動化構(gòu)建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JDK8的lambda方式List轉(zhuǎn)Map的操作方法
account是一個返回本身的lambda表達(dá)式,其實還可以使用Function接口中的一個默認(rèn)方法代替,使整個方法更簡潔優(yōu)雅,這篇文章主要介紹了JDK8的lambda方式List轉(zhuǎn)Map,需要的朋友可以參考下2022-07-07SpringBoot日志進(jìn)階實戰(zhàn)之Logback配置經(jīng)驗和方法
本文給大家介紹在SpringBoot中使用Logback配置日志的經(jīng)驗和方法,并提供了詳細(xì)的代碼示例和解釋,包括:滾動文件、異步日志記錄、動態(tài)指定屬性、日志級別、配置文件等常用功能,覆蓋日常Logback配置開發(fā)90%的知識點,感興趣的朋友跟隨小編一起看看吧2023-06-06實例講解分布式緩存軟件Memcached的Java客戶端使用
這篇文章主要介紹了分布式緩存軟件Memcached的Java客戶端使用,Memcached在GitHub上開源,作者用其Windows平臺下的版本進(jìn)行演示,需要的朋友可以參考下2016-01-01