大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 使用自定義Maven設置文件

使用自定義Maven設置文件

更新時間:2021-12-22 09:38:11 來源:動力節點 瀏覽948次

Mavensettings.xml文件定義了以各種方式配置 Maven 執行的值。最常見的是,它用于定義本地存儲庫位置、備用遠程存儲庫服務器以及私有存儲庫的身份驗證信息。在本文中,您將學習如何向部署在 Heroku 上的 Java 應用程序添加自定義設置文件。

如果您已經有一個 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.pom
Downloaded: 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.jar
Downloaded: 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并按照保護存儲庫的說明來創建存儲庫。或者您可以使用JFrog Artifactory的托管版本。

在任何一種情況下,都可以使用私有存儲庫來發布內部工件并將它們包含在您的 Heroku 應用程序中。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 免费在线观看亚洲 | www.四虎影视.com | 奇米第四色777 | 天天操天天噜 | 麻豆国产在线观看一区二区 | 成人亚洲欧美综合 | 国产欧美精品区一区二区三区 | 国产五月色婷婷六月丁香视频 | 日韩精品高清自在线 | 一本久道久久综合狠狠爱 | 夜夜骑天天操 | 国产免费爱在线观看视频 | 性欧美一级毛片欧美片 | 韩国一级理黄论片 | 久久有这有精品在线观看 | 伊人热人久久中文字幕 | 国产日韩精品一区二区 | 亚洲 国产 路线1路线2路线 | 四虎激情 | 国产成人综合在线 | 性做久久久久久蜜桃花 | 欧美成人欧美激情欧美风情 | 99re这里只有精品66 | 国产成人性毛片aaww | 国模私拍视频在线观看 | 欧美乱插| 中文字幕中文字幕中中文 | 91大神在线精品视频一区 | 久久免费久久 | 四虎国产成人永久精品免费 | 亚洲欧美日韩高清中文在线 | 亚洲综合视频网 | 福利姬在线视频国产观看 | 国产亚洲精品久久综合影院 | 久青草视频 | 色94色欧美一区 | 97影院理论午夜论不卡 | 亚洲精品国产第一区二区多人 | 久久草在线免费 | 久久久日韩精品国产成人 | 免费观看午夜在线欧差毛片 |