欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Maven混合配置私有倉(cāng)庫(kù)和公共倉(cāng)庫(kù)的問(wèn)題

 更新時(shí)間:2022年06月20日 09:54:14   投稿:mrr  
這篇文章主要介紹了Maven混合配置私有倉(cāng)庫(kù)和公共倉(cāng)庫(kù),通過(guò)實(shí)例代碼詳細(xì)介紹了私有和公共倉(cāng)庫(kù)混合配置的方法,需要的朋友可以參考下

背景

近期在調(diào)研一個(gè)開(kāi)源倉(cāng)庫(kù),于是將 代碼 從github下載后,當(dāng)IDEA sync依賴時(shí)出現(xiàn)Cannot resolve org.fourthline.cling:cling-support:2.1.1 的問(wèn)題,詳情如下:

Cannot resolve org.fourthline.cling:cling-support:2.1.1 
Clean up the broken artifacts data (.lastUpdated files) and reload the project.
Cannot resolve org.fourthline.cling:cling-core:2.1.1 
Clean up the broken artifacts data (.lastUpdated files) and reload the project.

很明顯這個(gè)問(wèn)題是Maven倉(cāng)庫(kù)找不到需要的jar包。那么如何解決這個(gè)問(wèn)題呢?

私有和公共倉(cāng)庫(kù)混合配置

Maven倉(cāng)庫(kù)

首先,需要知道Maven倉(cāng)庫(kù)分為私有倉(cāng)庫(kù)、公有倉(cāng)庫(kù)、第三方倉(cāng)庫(kù)。其中:

  • 私有倉(cāng)庫(kù):一般是公司或個(gè)人自己搭建的倉(cāng)庫(kù)。
  • 公共倉(cāng)庫(kù)

    首選是Maven官方的倉(cāng)庫(kù),地址:repo1.maven.org/maven2/

    官方倉(cāng)庫(kù)在國(guó)內(nèi)訪問(wèn)極慢,因此國(guó)內(nèi)一般會(huì)使用阿里云倉(cāng)庫(kù)替代,地址:maven.aliyun.com/nexus/conte…

  • 第三方倉(cāng)庫(kù):一些個(gè)人、團(tuán)體、公司開(kāi)放的倉(cāng)庫(kù),倉(cāng)庫(kù)中的jar包并沒(méi)有發(fā)布到公共倉(cāng)庫(kù)中。

熟悉倉(cāng)庫(kù)的分類(lèi)對(duì)于解決上文中遇到的問(wèn)題有這個(gè)重要的作用。

解決步驟

一、驗(yàn)證私有倉(cāng)庫(kù)

遇到依賴缺失的問(wèn)題后,首先需要確認(rèn)私有倉(cāng)庫(kù)是否存在依賴,查看nexus發(fā)現(xiàn)并沒(méi)有需要的依賴,可以斷定私有倉(cāng)庫(kù)沒(méi)有此依賴。

二、搜索共有倉(cāng)庫(kù)

Maven官方的倉(cāng)庫(kù)提供了Web搜索頁(yè)面,地址:repo1.maven.org/maven2/,嘗試搜索后發(fā)現(xiàn)也沒(méi)有需要的依賴。如下:

三、搜索第三方倉(cāng)庫(kù)

經(jīng)過(guò)以上搜索后,可以斷定 代碼 需要的依賴,一定是由第三方倉(cāng)庫(kù)提供的。如何找到是在哪個(gè)第三方倉(cāng)庫(kù)呢?

此時(shí),就需要mvnrepository來(lái)提供幫助了,地址: mvnrepository.com/ 。mvnrepository提供了公共倉(cāng)庫(kù)和第三方倉(cāng)庫(kù)中jar包的索引、查詢、下載等實(shí)用功能。

我們嘗試搜索需要的依賴, mvnrepository.com/artifact/or…,結(jié)果如下圖:

可以看到在mvnrepository中找到了需要的依賴。那么問(wèn)題來(lái),如何知道第三方倉(cāng)庫(kù)的地址呢?可以詳細(xì)看上圖中箭頭指向的區(qū)域,這里展示了第三方倉(cāng)庫(kù)的maven url。

在實(shí)踐中,完全可以跳過(guò)搜索公共倉(cāng)庫(kù),因?yàn)?code>mvnrepository已經(jīng)包含了公共倉(cāng)庫(kù)的依賴。

四、maven配置

maven倉(cāng)庫(kù)的配置是在setting.xml配置的。如果要混合配置私有倉(cāng)庫(kù)和公共倉(cāng)庫(kù),需要在setting.xml增加新的mirrorprofile,并激活新的activeProfile。

mirror

setting.xmlmirrors節(jié)點(diǎn),是用來(lái)配置鏡像URL的。mirrors可以配置多個(gè)mirror,每個(gè)mirrorid,name,url,mirrorOf屬性,詳細(xì)解釋如下:

  • id是唯一標(biāo)識(shí)一個(gè)mirror
  • name貌似沒(méi)多大用,相當(dāng)于描述
  • url是官方的庫(kù)地址
  • mirrorOf代表了一個(gè)鏡像的替代位置,其中,
    • *: 匹配所有,所有內(nèi)容都從鏡像拉??;
    • external:*: 除了本地緩存的所有從鏡像倉(cāng)庫(kù)拉?。?/li>
    • repo,repo1: repo或者repo1,這里的repo指的倉(cāng)庫(kù)ID;
    • *,!repo1: 除了repo1的所有倉(cāng)庫(kù);

我們這次需要添加的mirror如下:

<mirror>
	<id>nexus-4thline</id>
	<mirrorOf>4thline</mirrorOf>
	<name>4thline nexus</name>
	<url>http://4thline.org/m2/</url>
</mirror>

這里又產(chǎn)生了一個(gè)問(wèn)題,配置了多個(gè)mirror,Maven如何排序?答案是,Maven并不是按照setting.xml中配置的順序執(zhí)行,而是根據(jù)字母排序來(lái)指定第一個(gè),然后會(huì)遍歷所有的倉(cāng)庫(kù),直至找到需要的依賴。

profile

作用:根據(jù)環(huán)境參數(shù)來(lái)調(diào)整構(gòu)建配置的列表,settings.xml中的profile元素是pom.xmlprofile元素的裁剪版本。

  • id:profile的唯一標(biāo)識(shí)
  • activation:自動(dòng)觸發(fā)profile的條件邏輯
  • repositories:遠(yuǎn)程倉(cāng)庫(kù)列表
  • pluginRepositories:插件倉(cāng)庫(kù)列表
  • properties:擴(kuò)展屬性列表

這里的profile元素只包含這五個(gè)子元素是因?yàn)檫@里只關(guān)心構(gòu)建系統(tǒng)這個(gè)整體(這正是settings.xml文件的角色定位),而非單獨(dú)的項(xiàng)目對(duì)象模型設(shè)置。如果一個(gè)settings.xml中的profile被激活,它的值會(huì)覆蓋任何其它定義在pom.xml中帶有相同id的profile。

我們這次需要添加的profile如下:

<profile>
  <id>4thline</id>
  <repositories>
	<repository>
	  <id>4thline</id>
	  <url>http://4thline.org/m2/</url>
	  <releases>
		<enabled>true</enabled>
	  </releases> 
	  <snapshots>
		<enabled>true</enabled> 
		<updatePolicy>always</updatePolicy>
	  </snapshots>
	</repository>
  </repositories>
</profile>

activeProfile

作用:手動(dòng)激活profiles的列表,按照profile被應(yīng)用的順序定義activeProfile。

該元素包含了一組activeProfile元素,每個(gè)activeProfile都含有一個(gè)profile id。任何在activeProfile中定義的profile id,不論環(huán)境設(shè)置如何,其對(duì)應(yīng)的 profile都會(huì)被激活。如果沒(méi)有匹配的profile,則什么都不會(huì)發(fā)生。

我們這次需要添加的activeProfile如下:

<activeProfiles>
	<activeProfile>corp</activeProfile>
	<activeProfile>aliyun</activeProfile>
	<activeProfile>4thline</activeProfile>
</activeProfiles>

配置結(jié)果

經(jīng)過(guò)上述配置后,首先我們可以在IDEA的Maven側(cè)邊欄中,可以看到多了4thlineprofile。(可以看到IDEA的profiles是按照首字母排序的,和上文中mirror的定義是一致的。)

重新執(zhí)行Reload All Maven Projects,所有的依賴都正常import。

setting.xml完整配置

完整版的setting.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<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>D:\Users\xxx\.m2\repository\</localRepository>
	<pluginGroups>
	</pluginGroups>
	<mirrors>
		<mirror>
		  <id>nexus</id>
		  <mirrorOf>corp</mirrorOf>
		  <name>corp nexus</name>
		  <url>http://maven.corp.com/nexus/content/groups/public</url>
		</mirror>
		<mirror>
			<id>nexus-aliyun</id>
			<mirrorOf>*</mirrorOf>
			<name>aliyun nexus</name>
			<url>http://maven.aliyun.com/nexus/content/groups/public</url>
		</mirror>
		<mirror>
			<id>nexus-4thline</id>
			<mirrorOf>4thline</mirrorOf>
			<name>4thline nexus</name>
			<url>http://4thline.org/m2/</url>
		</mirror>
	</mirrors>
	<servers>
		<server>
			<id>releases</id>
			<username>xxx</username>
			<password>yyy</password>
		</server>
		<server>
			<id>snapshots</id>
			<username>xxx</username>
			<password>yyy</password>
		</server>
	</servers>
	<profiles xmlns="">
		<profile>
			<id>corp</id>
			<repositories>
				<repository>
				  <id>public</id>
				  <name>all repoes</name>
				  <url>http://maven.corp.com/nexus/content/groups/public</url>
				  <releases>
					<enabled>true</enabled>
					<checksumPolicy>warn</checksumPolicy>
				  </releases>
				  <snapshots>
					 <enabled>true</enabled>
					 <updatePolicy>always</updatePolicy>
					 <checksumPolicy>fail</checksumPolicy>
				  </snapshots>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>corp</id>
					<url>http://maven.corp.com/nexus/content/groups/public</url>
					<releases>
						<enabled>true</enabled>
						<checksumPolicy>warn</checksumPolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
						<checksumPolicy>fail</checksumPolicy>
					</snapshots>
				</pluginRepository>
			</pluginRepositories>
		</profile>
		<profile>
		  <id>aliyun</id>
		  <repositories>
			<repository>
			  <id>aliyun</id>
			  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
			  <releases>
				<enabled>true</enabled>
			  </releases> 
			  <snapshots>
				<enabled>true</enabled> 
				<updatePolicy>always</updatePolicy>
			  </snapshots>
			</repository>
		  </repositories>
		</profile>
		<profile>
		  <id>4thline</id>
		  <repositories>
			<repository>
			  <id>4thline</id>
			  <url>http://4thline.org/m2/</url>
			  <releases>
				<enabled>true</enabled>
			  </releases> 
			  <snapshots>
				<enabled>true</enabled> 
				<updatePolicy>always</updatePolicy>
			  </snapshots>
			</repository>
		  </repositories>
		</profile>
	</profiles>
  	<activeProfiles>
		<activeProfile>corp</activeProfile>
		<activeProfile>aliyun</activeProfile>
		<activeProfile>4thline</activeProfile>
	</activeProfiles>
</settings>

結(jié)論

Maven是每一個(gè)Java程序員都再熟悉不過(guò)的工具,但是我們真的了解它嗎?

任何一個(gè)優(yōu)秀的框架、組件、工具,除了特殊的另外的特殊優(yōu)化外,很多時(shí)候設(shè)計(jì)思路是大體相同的,我們?cè)趯?shí)際工作中不僅僅要擴(kuò)展自己的涉獵領(lǐng)域,更需要在某些領(lǐng)域深入進(jìn)入,對(duì)個(gè)人的提升是更為有益處的。

到此這篇關(guān)于Maven混合配置私有倉(cāng)庫(kù)和公共倉(cāng)庫(kù)的文章就介紹到這了,更多相關(guān)Maven配置私有倉(cāng)庫(kù)和公共倉(cāng)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java SSM框架如何配置靜態(tài)資源加載

    Java SSM框架如何配置靜態(tài)資源加載

    這篇文章主要介紹了Java SSM框架如何配置靜態(tài)資源加載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 詳解Java中Array和ArrayList的比較和轉(zhuǎn)換

    詳解Java中Array和ArrayList的比較和轉(zhuǎn)換

    在 Java 編程中,arrays 和 arraylists 都是基本的數(shù)據(jù)結(jié)構(gòu),用來(lái)存放數(shù)據(jù)集合,雖然兩者的用途一樣,但是它們的特點(diǎn)極大地影響應(yīng)用的性能和靈活性,本文探討 arrays 和 arraylists 的重要特性,它們各自的強(qiáng)項(xiàng)和弱點(diǎn),,需要的朋友可以參考下
    2023-08-08
  • servlet上傳文件實(shí)現(xiàn)代碼詳解(四)

    servlet上傳文件實(shí)現(xiàn)代碼詳解(四)

    這篇文章主要為大家詳細(xì)介紹了servlet上傳文件的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 一文帶你搞懂Java中方法重寫(xiě)與方法重載的區(qū)別

    一文帶你搞懂Java中方法重寫(xiě)與方法重載的區(qū)別

    這篇文章主要介紹了Java中方法重寫(xiě)與方法重載有哪些區(qū)別,文中有詳細(xì)的代碼示例,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • java編寫(xiě)簡(jiǎn)單的ATM存取系統(tǒng)

    java編寫(xiě)簡(jiǎn)單的ATM存取系統(tǒng)

    這篇文章主要介紹了java編寫(xiě)簡(jiǎn)單的ATM存取系統(tǒng),附上思路和具體實(shí)現(xiàn)代碼,適合新人練手用,推薦給小伙伴們。
    2015-02-02
  • java開(kāi)發(fā)中常遇到的各種難點(diǎn)以及解決思路方案

    java開(kāi)發(fā)中常遇到的各種難點(diǎn)以及解決思路方案

    Java項(xiàng)目是一個(gè)復(fù)雜的軟件開(kāi)發(fā)過(guò)程,其中會(huì)涉及到很多技術(shù)難點(diǎn),這篇文章主要給大家介紹了關(guān)于java開(kāi)發(fā)中常遇到的各種難點(diǎn)以及解決思路方案的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • 面試初級(jí)Java開(kāi)發(fā)問(wèn)到Arrays

    面試初級(jí)Java開(kāi)發(fā)問(wèn)到Arrays

    這篇文章主要介紹了Java Arrays工具類(lèi)用法,結(jié)合實(shí)例形式分析了java Arrays工具類(lèi)針對(duì)數(shù)組元素修改、復(fù)制、排序等操作使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2021-07-07
  • Java Web監(jiān)聽(tīng)器Listener接口原理及用法實(shí)例

    Java Web監(jiān)聽(tīng)器Listener接口原理及用法實(shí)例

    這篇文章主要介紹了Java Web監(jiān)聽(tīng)器Listener接口原理及用法實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot2 參數(shù)管理實(shí)踐之入?yún)⒊鰠⑴c校驗(yàn)的方式

    SpringBoot2 參數(shù)管理實(shí)踐之入?yún)⒊鰠⑴c校驗(yàn)的方式

    這篇文章主要介紹了SpringBoot2 參數(shù)管理實(shí)踐,入?yún)⒊鰠⑴c校驗(yàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-06-06
  • java8傳函數(shù)方法圖文詳解

    java8傳函數(shù)方法圖文詳解

    在本篇文章中小編給大家整理了關(guān)于java8傳函數(shù)方法和相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-04-04

最新評(píng)論