Maven repo 的 Artifactory "Set me up" 接口不允许我生成 settings.xml 而不首先识别部署和虚拟 repos

Artifactory "Set me up" interface for Maven repo not permitting me to generate settings.xml without identifying deployment and virtual repos first

使用下图作为参考,我目前有一些挑战。

我正在尝试从 artifactory 中为 maven 生成 settings.xml 模板,这样我就可以从 artifactory 下载我的 maven 依赖项。这就是我想要做的。我不是要建立部署回购协议或其他任何东西。我只是想为 Maven 插件建立我的依赖代理。

我的 maven 仓库将 download/cache 来自 maven central,叫做“joeytest-maven-central-remote”。

当我在 artifactory 中点击“设置我”时,会发生以下情况:

  1. 系统提示我选择存储库。自然地,我会简单地选择我刚刚设置的远程仓库。那就是我想从中下载依赖项的地方。问题是,我做不到。这不是一个选择。我不得不创建另一个名为“joeytest-maven-dev-local”的存储库,这可能是我将我的 Maven 工件部署到的东西,只是为了在这个下拉列表中有一些东西到 select。为什么我不能只选择我创建的远程仓库?这是问题 #1。

  2. 配置 选项卡中进一步向下移动,我现在不得不为 releases/snapshots/plug-releases/plugin-snapshots 识别四 (4) 个虚拟存储库。为什么?这与我只想从这个远程仓库下载依赖项有什么关系?我了解虚拟存储库的用途,但我 want/need 目前绝不会使用它们。它们不应该是 convenience/logistical 功能,而不是必需的组件吗?这是问题 #2。

这些问题是否只是设计不当的“设置”GUI,我不需要输入任何此类信息。我可以简单地获取模板,删除所有不必要的东西,然后直接从我最初创建的远程仓库下载依赖项吗?

或者我是否完全缺少一些先决条件,如果是这样,有人可以阐明为什么需要这些组件才能下载 settingsl.xml 模板文件吗?

提前致谢,

既然我已经解决了,我将自己回答这个问题。希望这对其他人有帮助。

我对此非常着迷,想提供我的发现。在 artifactory 中,存储库选择屏幕的右上角有一个“设置我”按钮。在设置 artifactory 以下载 Maven 依赖项时,多个在线资源中提到了此按钮作为起点。然而,在线文章没有提到的是,这个按钮用于生成一个模板,它允许的不仅仅是下载依赖项。它还为部署和虚拟工件存储库的使用做好准备。因此,为了使用此功能,您必须已经有一个部署仓库,并且至少有一个虚拟仓库,在 artifactory 中设置。这会产生一个错误的假设,即这些项目需要使用 artifactory 作为下载依赖项的代理。这是错误的。见下文。

您可以完全跳过这个“设置我”按钮,而是直接在 maven 端设置您的 settings.xml。作为初学者,这种方法更干净、更简单。如果您需要 Maven settings.xml 的起点,可以免费使用模板作为起点。这是一个工作示例模板,供您参考。

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    
  <servers>
    <server>
      <id>myRepository</id>
      <username>JohnDoe</username>
      <password>****</password>
    </server>  
    <server>
      <id>myPluginRepository</id>
      <username>JohnDoe</username>
      <password>****</password>
    </server>
  </servers>
  
  <profiles>
    <profile>
      <id>artifactory_default_profile</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      
      <repositories>
        <repository>
          <id>central</id>
          <url>https://repo1.maven.org/maven2/</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
        <repository>
          <id>myRepository</id>
          <name>joeytest-maven-libs-virtual</name>
          <url>https://artifactory.dev.{myorg}.com:443/artifactory/joeytest-maven-libs-virtual/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>        
        </repository>
      </repositories>
      
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>https://repo1.maven.org/maven2/</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
        <pluginRepository>
          <id>myPluginRepository</id>
          <name>joeytest-maven-libs-virtual</name>
          <url>https://artifactory.dev.{myorg}.com:443/artifactory/joeytest-maven-libs-virtual/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>        
        </pluginRepository>
      </pluginRepositories>
      
    </profile>
  </profiles>
  
  <activeProfiles>
    <activeProfile>artifactory_default_profile</activeProfile>
  </activeProfiles>
  
</settings>

这个模板做了两件事:

  • 禁用默认的 maven 中央下载位置,因此不会使用它。
  • 指示 Maven 使用 artifactory 下载 Maven 构建的所有内容。

要使用 artifactory 作为下载依赖项的代理,您只需要至少一个在 artifactory 中创建的远程存储库,它具有有效的 URL 以从外部获取工件。除此之外,如果您愿意,您可以为您的构建创建部署存储库,and/or 创建虚拟存储库以聚合其他工件存储库,但这些步骤完全是可选的。