溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用自定義Maven設置文件

發布時間:2022-09-28 11:13:38 來源:億速云 閱讀:226 作者:iii 欄目:服務器

本文小編為大家詳細介紹“怎么使用自定義Maven設置文件”,內容詳細,步驟清晰,細節處理妥當,希望這篇“怎么使用自定義Maven設置文件”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

Mavensettings.xml文件定義了以各種方式配置Maven執行的值。最常見的是,它用于定義本地存儲庫位置、備用遠程存儲庫服務器以及私有存儲庫的身份驗證信息。如果您已經有一個 Java 應用程序,您可以在本示例中使用它。否則,從Heroku 上的 Java 入門文章創建一個簡單的應用程序。

創建自定義設置文件

當settings.xml應用程序的根目錄中存在名為的文件時, Heroku 的 Java 支持將在編譯時自動使用它來配置 Maven。

為了演示這一點,settings.xml在 Java 項目的根目錄中添加一個文件,并將以下代碼放入其中。

<?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在解析應用程序的依賴項時搜索托管在http://repository.jboss.org/的存儲庫。存儲庫必須使用 HTTP 或 HTTPS 尋址。

我們可以通過將-s選項添加到任何 Maven 任務來在本地測試設置。但首先,我們需要向項目添加一個新的依賴項。該jboss.web.servlet-api庫是一個很好的示例,因為它僅在 JBoss 存儲庫中可用。將以下元素添加到您的項目的pom.xml:

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

現在運行以下命令,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)

如果我們沒有使用自定義設置文件,構建就會失敗,Maven 會產生這樣的錯誤:

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]

現在將settings.xml和pom.xml更改添加到您的 Git 存儲庫并像這樣部署到 Heroku:

當 Maven 在 dyno 上運行時,我們看到的輸出與我們在本地看到的輸出相同。這是有效的,因為 Heroku 檢測settings.xml根目錄中的文件,并將-s選項添加到 Maven 命令。接下來,我們將討論如何自定義此位置。

定義 MAVEN_SETTINGS_PATH 配置變量

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

我們可以通過將現有文件移動settings.xml到support/目錄中并像這樣重命名來演示此功能:

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

現在我們通過定義MAVEN_SETTINGS_PATH相對于根目錄來告訴 Heroku 設置文件所在的位置。

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

在測試更改之前,我們增加了 servlet-api 的版本——強制 Maven 再次下載它。更改pom.xmlto version 中的依賴項2.1.1.GA。它應該是這樣的:

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

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

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

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

定義 MAVEN_SETTINGS_URL 配置變量

當MAVEN_SETTINGS_URL定義配置變量,Heroku的將下載的文件在指定的位置,并用它來配置Maven。在演示之前,我們必須取消設置我們在上一個示例中定義的變量,因為如果兩個變量都設置了,它將優先:

heroku config:unset MAVEN_SETTINGS_PATH

現在,我們可以使用settings.xml來自公開可用源(例如 Torquebox Application Server 代碼庫)的 。像這樣設置配置變量:

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 存儲庫,提交更改并重新部署到 Heroku。Maven 將像之前一樣從 JBoss 存儲庫下載新的工件。

JBoss 存儲庫很方便,因為它是公共的——不需要密碼即可訪問。但并非所有存儲庫都如此開放。

使用受密碼保護的存儲庫

某些工件存儲庫需要用戶名和密碼才能訪問。很多時候,存儲庫是托管內部工件的私有服務器。在這種情況下,必須在 中提供訪問存儲庫的憑據,settings.xml如果將文件簽入 Git 存儲庫,這可能會出現問題。

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

heroku config:set MAVEN_REPO_PASSWORD="deployment123"

然后,我們可以用我們的變量settings.xml通過創建一個文件<server>相匹配的元素<id>中的<repository>元素中<activeProfile>。

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

為了演示這一點,您將需要一個私有的Maven存儲庫。您可以通過下載Sonatype Nexus并按照保護存儲庫的說明來創建存儲庫?;蛘吣梢允褂肑Frog Artifactory的托管版本。在任何一種情況下,都可以使用私有存儲庫來發布內部工件并將它們包含在您的 Heroku 應用程序中。

讀到這里,這篇“怎么使用自定義Maven設置文件”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女