久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么使用自定義Maven設(shè)置文件

共計(jì) 4587 個(gè)字符,預(yù)計(jì)需要花費(fèi) 12 分鐘才能閱讀完成。

本文丸趣 TV 小編為大家詳細(xì)介紹“怎么使用自定義 Maven 設(shè)置文件”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“怎么使用自定義 Maven 設(shè)置文件”文章能幫助大家解決疑惑,下面跟著丸趣 TV 小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

Mavensettings.xml 文件定義了以各種方式配置 Maven 執(zhí)行的值。最常見的是,它用于定義本地存儲(chǔ)庫(kù)位置、備用遠(yuǎn)程存儲(chǔ)庫(kù)服務(wù)器以及私有存儲(chǔ)庫(kù)的身份驗(yàn)證信息。如果您已經(jīng)有一個(gè) Java 應(yīng)用程序,您可以在本示例中使用它。否則,從 Heroku 上的 Java 入門文章創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用程序。

創(chuàng)建自定義設(shè)置文件

當(dāng) settings.xml 應(yīng)用程序的根目錄中存在名為的文件時(shí),Heroku 的 Java 支持將在編譯時(shí)自動(dòng)使用它來(lái)配置 Maven。

為了演示這一點(diǎn),settings.xml 在 Java 項(xiàng)目的根目錄中添加一個(gè)文件,并將以下代碼放入其中。

?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 
  profiles 
  profile 
  id jboss-public /id 
  repositories 
  repository 
  id jboss-public-repository /id 
  name JBoss Public Maven Repository Group /name 
  url http://repository.jboss.org/nexus/content/groups/public/ /url 
  /repository 
  /repositories 
  /profile 
  /profiles 
  activeProfiles 
  activeProfile jboss-public /activeProfile 
  /activeProfiles /settings

這告訴 Maven 在解析應(yīng)用程序的依賴項(xiàng)時(shí)搜索托管在 http://repository.jboss.org/ 的存儲(chǔ)庫(kù)。存儲(chǔ)庫(kù)必須使用 HTTP 或 HTTPS 尋址。

我們可以通過(guò)將 - s 選項(xiàng)添加到任何 Maven 任務(wù)來(lái)在本地測(cè)試設(shè)置。但首先,我們需要向項(xiàng)目添加一個(gè)新的依賴項(xiàng)。該 jboss.web.servlet-api 庫(kù)是一個(gè)很好的示例,因?yàn)樗鼉H在 JBoss 存儲(chǔ)庫(kù)中可用。將以下元素添加到您的項(xiàng)目的 pom.xml:

dependency 
  groupId jboss.web /groupId 
  artifactId servlet-api /artifactId 
  version 2.1.0.GA /version /dependency

現(xiàn)在運(yùn)行以下命令,Maven 將下載工件。

mvn -s settings.xml dependency:list
[INFO] Scanning for projects...
...Downloading: http://repository.jboss.org/nexus/content/groups/public/jboss/web/servlet-api/2.1.0.GA/servlet-api-2.1.0.GA.pomDownloaded: http://repository.jboss.org/nexus/content/groups/public/jboss/web/servlet-api/2.1.0.GA/servlet-api-2.1.0.GA.pom (195 B at 0.2 KB/sec)Downloading: http://repository.jboss.org/nexus/content/groups/public/jboss/web/servlet-api/2.1.0.GA/servlet-api-2.1.0.GA.jarDownloaded: http://repository.jboss.org/nexus/content/groups/public/jboss/web/servlet-api/2.1.0.GA/servlet-api-2.1.0.GA.jar (84 KB at 90.8 KB/sec)

如果我們沒(méi)有使用自定義設(shè)置文件,構(gòu)建就會(huì)失敗,Maven 會(huì)產(chǎn)生這樣的錯(cuò)誤:

Downloading: http://repo.maven.apache.org/maven2/jboss/web/servlet-api/2.1.0.GA/servlet-api-2.1.0.GA.pom
[WARNING] The POM for jboss.web:servlet-api:jar:2.1.0.GA is missing, no dependency information available
Downloading: http://repo.maven.apache.org/maven2/jboss/web/servlet-api/2.1.0.GA/servlet-api-2.1.0.GA.jar
[ERROR] Failed to execute goal on project helloworld: Could not resolve dependencies for project com.example:helloworld:jar:1.0-SNAPSHOT: Could not find artifact jboss.web:servlet-api:jar:2.1.0.GA in central (http://repo.maven.apache.org/maven2) -  [Help 1]

現(xiàn)在將 settings.xml 和 pom.xml 更改添加到您的 Git 存儲(chǔ)庫(kù)并像這樣部署到 Heroku:

當(dāng) Maven 在 dyno 上運(yùn)行時(shí),我們看到的輸出與我們?cè)诒镜乜吹降妮敵鱿嗤_@是有效的,因?yàn)?Heroku 檢測(cè) settings.xml 根目錄中的文件,并將 - s 選項(xiàng)添加到 Maven 命令。接下來(lái),我們將討論如何自定義此位置。

定義 MAVEN_SETTINGS_PATH 配置變量

如果您不希望該 settings.xml 文件位于根目錄中,或者您打算在不同的設(shè)置配置之間頻繁更改,您可能更愿意將設(shè)置文件放在自定義位置。Heroku 通過(guò) MAVEN_SETTINGS_PATHconfig 變量提供此功能。

我們可以通過(guò)將現(xiàn)有文件移動(dòng) settings.xml 到 support/ 目錄中并像這樣重命名來(lái)演示此功能:

mkdir -p support
git mv settings.xml support/jboss-settings.xml

現(xiàn)在我們通過(guò)定義 MAVEN_SETTINGS_PATH 相對(duì)于根目錄來(lái)告訴 Heroku 設(shè)置文件所在的位置。

heroku config:set MAVEN_SETTINGS_PATH=support/jboss-settings.xml

在測(cè)試更改之前,我們?cè)黾恿?servlet-api 的版本——強(qiáng)制 Maven 再次下載它。更改 pom.xmlto version 中的依賴項(xiàng) 2.1.1.GA。它應(yīng)該是這樣的:

dependency 
  groupId jboss.web /groupId 
  artifactId servlet-api /artifactId 
  version 2.1.1.GA /version /dependency

現(xiàn)在將更改提交到 Git,然后像這樣重新部署到 Heroku:

git commit -am  moved settings file and incremented servlet-api version git push heroku master

Maven 將再次從 JBoss 存儲(chǔ)庫(kù)下載依賴項(xiàng)。這提供了一些靈活性,但有時(shí)在您的項(xiàng)目中自定義位置是不夠的。您可能希望將文件完全保留在您的代碼庫(kù)之外。

定義 MAVEN_SETTINGS_URL 配置變量

當(dāng) MAVEN_SETTINGS_URL 定義配置變量,Heroku 的將下載的文件在指定的位置,并用它來(lái)配置 Maven。在演示之前,我們必須取消設(shè)置我們?cè)谏弦粋€(gè)示例中定義的變量,因?yàn)槿绻麅蓚€(gè)變量都設(shè)置了,它將優(yōu)先:

heroku config:unset MAVEN_SETTINGS_PATH

現(xiàn)在,我們可以使用 settings.xml 來(lái)自公開可用源 (例如 Torquebox Application Server 代碼庫(kù)) 的。像這樣設(shè)置配置變量:

heroku config:set MAVEN_SETTINGS_URL= https://raw.githubusercontent.com/torquebox/torquebox/master/support/settings.xml

和以前一樣,將 servlet-api 版本增加到 2.1.2.GA,添加 pom.xml 到 Git 存儲(chǔ)庫(kù),提交更改并重新部署到 Heroku。Maven 將像之前一樣從 JBoss 存儲(chǔ)庫(kù)下載新的工件。

JBoss 存儲(chǔ)庫(kù)很方便,因?yàn)樗枪驳摹恍枰艽a即可訪問(wèn)。但并非所有存儲(chǔ)庫(kù)都如此開放。

使用受密碼保護(hù)的存儲(chǔ)庫(kù)

某些工件存儲(chǔ)庫(kù)需要用戶名和密碼才能訪問(wèn)。很多時(shí)候,存儲(chǔ)庫(kù)是托管內(nèi)部工件的私有服務(wù)器。在這種情況下,必須在 中提供訪問(wèn)存儲(chǔ)庫(kù)的憑據(jù),settings.xml 如果將文件簽入 Git 存儲(chǔ)庫(kù),這可能會(huì)出現(xiàn)問(wèn)題。

幸運(yùn)的是,Maven 設(shè)置文件可以檢測(cè)環(huán)境變量。表單中的任何標(biāo)記 ${env.ENV_VAR}(其中 ENV_VAR 是變量的名稱)都將解析為關(guān)聯(lián)環(huán)境變量的值。因此,我們可以將私有 Maven 存儲(chǔ)庫(kù)的密碼定義為 Heroku 配置變量,如下所示:

heroku config:set MAVEN_REPO_PASSWORD= deployment123

然后,我們可以用我們的變量 settings.xml 通過(guò)創(chuàng)建一個(gè)文件 server 相匹配的元素 id 中的 repository 元素中 activeProfile。

servers 
  server 
  id my-private-repo /id 
  username deployment /username 
  password ${env.MAVEN_REPO_PASSWORD} /password 
  /server /servers

為了演示這一點(diǎn),您將需要一個(gè)私有的 Maven 存儲(chǔ)庫(kù)。您可以通過(guò)下載 Sonatype Nexus 并按照保護(hù)存儲(chǔ)庫(kù)的說(shuō)明來(lái)創(chuàng)建存儲(chǔ)庫(kù)。或者您可以使用 JFrog Artifactory 的托管版本。在任何一種情況下,都可以使用私有存儲(chǔ)庫(kù)來(lái)發(fā)布內(nèi)部工件并將它們包含在您的 Heroku 應(yīng)用程序中。

讀到這里,這篇“怎么使用自定義 Maven 設(shè)置文件”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-18發(fā)表,共計(jì)4587字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 卢湾区| 济宁市| 惠来县| 长宁区| 南投县| 宁城县| 夏河县| 藁城市| 金川县| 梨树县| 弥渡县| 五大连池市| 新民市| 广东省| 望都县| 景德镇市| 曲水县| 丹东市| 北安市| 肥东县| 东安县| 裕民县| 奇台县| 阜平县| 新营市| 皋兰县| 克拉玛依市| 平泉县| 香港 | 沂源县| 秀山| 左贡县| 贡嘎县| 全南县| 鹿泉市| 东源县| 四子王旗| 呼图壁县| 会昌县| 永年县| 色达县|