多模塊:分模塊、分項目、統(tǒng)一管理子項目 繼承:復(fù)用父項目、復(fù)用其它項目
多模塊解決:將maven項目分解,為了統(tǒng)一管理和開發(fā)方便,父項目管理一堆子項目,站在父項目。 繼承解決:使用pom配置,為了復(fù)用和整合的問題,站在子項目。
多模塊:將一個大工程分成幾個小的工程便于開發(fā)。 繼承:多個模塊之間有關(guān)系,主要是指子模塊和父工程之間的繼承關(guān)系。
多模塊:定義一組構(gòu)建模塊的聚集 特點:Maven build 父模塊的時候,會自動build子模塊,父模塊的packageing必須是POM。
繼承:復(fù)用配置 可繼承的元素,子模塊可任意重寫父模塊配置。
使用eclipse工具進行父子工程構(gòu)建。
第一步:新建父工程項目(new maven PRoject):打包方式變成了pom。maven的父項目,可以管理子項目,可以被繼承。 第二步:建立一個子項目工程(Maven Module),packaging根據(jù)類型選擇jar或者war。
parent繼承:復(fù)用父項目,包括坐標,jar各種配置。
<!-- 繼承:父項目,可以復(fù)用父項目的東西 --> <parent> <groupId>cn.itheima.maven</groupId> <artifactId>mavenprojectparent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent>modules多模塊:用來管理子項目,向下管理
<!-- 多模塊(聚合):管理子項目 --> <modules> <module>mavenprojectchild01</module> <module>mavenprojectchild02</module> </modules>第三步:項目操作: 1.繼承:父工程導(dǎo)入jar包,子工程會自動導(dǎo)入父工程導(dǎo)入的jar包。 2.統(tǒng)一操作:只對父工程進行構(gòu)建操作,就會同時操作管理各個子模塊 對父工程進行編譯、清理、打包或安裝操作。
多模塊為了統(tǒng)一管理(聚合),而繼承是為了復(fù)用。
私服是架設(shè)在局域網(wǎng)的一種特殊的遠程倉庫,目的是代理遠程倉庫及部署第三方構(gòu)件。有了私服之后,當(dāng) Maven 需要下載構(gòu)件時,直接請求私服,私服上存在則下載到本地倉庫;否則,私服請求外部的遠程倉庫,將構(gòu)件下載到私服,再提供給本地倉庫下載。私服一般是公司搭建,內(nèi)部使用,也可以公開。
私服的優(yōu)點:減少用戶對中央倉庫的依賴訪問。還可以將私有的項目放到私服中。
官網(wǎng):http://www.sonatype.org/nexus/
目錄結(jié)構(gòu): - nexus-xxx:該目錄包含了Nexus運行所需要的文件,如啟動腳本、依賴jar包等 - sonatype-work:該目錄包含Nexus生成的配置文件、日志文件、倉庫文件等
第一個目錄是運行Nexus所必需的,而且所有相同版本的Nexus實例所包含的該目錄內(nèi)容都是一樣的。 第二個目錄不是必須的,在運行的時候會動態(tài)創(chuàng)建的,所以需要備份Nexus的時候,默認備份sonatype-work目錄就可以。
直接啟動: 直接雙擊console-nexus.bat運行,瀏覽器中輸入http://localhost:8081/nexus/。 通過服務(wù)來啟動:
倉庫的類型(Type),Nexus內(nèi)置有四種類型:
hosted(宿主倉庫):主要用于部署無法從公共倉庫獲取的構(gòu)件(如 Oracle 的 JDBC 驅(qū)動)以及自己或第三方的項目構(gòu)件; -一般需要安裝到proxy(代理倉庫):代理公共的遠程倉庫;–連接中央倉庫、其他私服virtual(虛擬倉庫):為了兼容、適配maven1的倉庫格式,可動態(tài)的將Maven1倉庫格式轉(zhuǎn)換為Maven2的倉庫格式,即也是為了服務(wù)Maven1的格式的倉庫數(shù)據(jù)。group(倉庫組):Nexus 通過倉庫組的概念統(tǒng)一管理多個倉庫,這樣我們在項目中直接請求倉庫組即可請求到倉庫組管理的多個倉庫倉庫的格式有兩種:
maven2:現(xiàn)在Maven倉庫使用的格式。maven1:Maven1格式倉庫已經(jīng)不再使用,除了Virtual類型的倉庫外,不要配置該格式。倉庫的策略(Policy)有兩種:
Release:發(fā)布(版本)Snapshot:快照(版本)默認情況下內(nèi)置的幾個倉庫說明:
Central:代理中央倉庫、策略為Release、只會下載和緩存中央倉庫中的發(fā)布版本構(gòu)件。Central M1 shadow: 代理中央倉庫,策略為Virtual,用于提供中央倉庫中M1格式的發(fā)布版本的構(gòu)件鏡像倉庫Release:策略為Release的宿主倉庫、用來部署組織內(nèi)部的發(fā)布版本內(nèi)容。Snapshot:策略為Snapshot的宿主倉庫、用來部署組織內(nèi)部的快照版本內(nèi)容。3rd party:策略為Release的宿主倉庫類型、用來部署無法從公共倉庫獲取的第三方發(fā)布版本構(gòu)件、如oracle連接驅(qū)動jar包。Apache Snapshot:策略為Snapshot的代理倉庫、用來代理ApacheMaven倉庫的快照版本構(gòu)件。Public Repositories:該倉庫將上述所有策略為Release的倉庫聚合并通過一致的地址提供服務(wù)。Public Snapshot Repositories:該倉庫將上述所有策略為Snapshot的倉庫聚合并通過一致的地址提供服務(wù)用戶名:admin,密碼:admin123登錄。
開啟遠程倉庫的索引同步搜索功能,即允許下載遠程倉庫索引: 點擊左邊Administration菜單下面的Repositories,找到右邊倉庫列表中的所有proxy類型的倉庫Apache Snapshots和Maven Central,然后依次點擊打開倉庫詳情,下面的configuration選項卡下把Download Remote Indexes修改為true。
經(jīng)過上述操作以后, Nexus會自動從遠程中央倉庫下載索引文件, 為了檢驗索引文件自動下載是否生效,可以切換到Browse Index,在 Browse Index 選項卡下,可以瀏覽到所有已被索引的構(gòu)件信息,包括坐標、格式、Maven 依賴的 xml 代碼。
添加第三方遠程私服倉庫,點擊菜單 Add - Proxy Repository
填入一下屬性: Repository ID:新倉庫唯一標識 Repository Name:新倉庫的名字 Remote Storage Location:要代理的遠程倉庫的地址
步驟為Repositories –> Add –> Hosted Repository,在頁面的下半部分輸入框中填入Repository ID和Repository Name即可,比如分別填入 zfy 和 zfy repostiory,另外把Deployment Policy設(shè)置為Allow Redeploy,點擊save就創(chuàng)建完成了。
將添加的新添加的代理倉庫加入 Public Repositories 倉庫組。選中 Public Repositories,在 Configuration 選項卡中,將要使用的倉庫從右側(cè) Available Repositories 移到左側(cè) Ordered Group Repositories,save 保存。
調(diào)整順序,倉庫組中的倉庫順序界定了下載構(gòu)件的遍歷順序,所以,建議將代理的遠程中央倉庫放到最后,將私服放到它之前,但本地的一些項目放到最前面。
在setting.xml配置鏡像
用內(nèi)部倉庫鏡像遠程倉庫提高下載速度
<mirrors><mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <!-- * 表示讓所有倉庫使用該鏡像--> <url>內(nèi)部公共倉庫地址</url> </mirror> …可以配置多個。。。 </mirrors>在maven的settings.xml中配置要連接的私服的用戶名和密碼。 私服的用戶名和密碼在nexus私服的配置文件夾中配置: sonatype-work/nexus/conf/security.xml 內(nèi)置帳號:admin/admin123 提示:密碼已加密。
<!--正式版發(fā)行倉庫帳號--><server> <id>releases</id> <username>用戶名</username> <passWord>密碼</password></server><!--快照版發(fā)行倉庫帳號--><server> <id>snapshots</id> <username>用戶名</username> <password>密碼</password></server>在要發(fā)布到私服的項目的pom.xml中配置,如:
<!-- 遠程倉庫的配置信息:用于發(fā)布項目到私服 --> <distributionManagement> <repository> <!-- 此處id必須和settings.xml中的server中配置的一致 --> <id>local-releases</id> <name>Internal Releases</name> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <!-- 此處id必須和settings.xml中的server中配置的一致 --> <id>local-snapshots</id> <name>Internal Snapshots</name> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>注意事項: 1.id必須和settings.xml中的server元素中的id元素內(nèi)容一致! 2.url是私服倉庫地址。 3.配置文件中不能有中文!
發(fā)布到私服:mvn deploy
第一步:先將普通的jar安裝到本地倉庫(mvn install命令)—將普通jar轉(zhuǎn)換為maven的構(gòu)件了。 第二步:切換到服務(wù)器管理界面,在3rd party倉庫選擇Artifact Upload,選擇From POM和Select Artifact(s) to Upload 生成 Artifacts
新聞熱點
疑難解答