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