Java 如何配置settings.xml以从Artifactory私有虚拟存储库中提取?

Java 如何配置settings.xml以从Artifactory私有虚拟存储库中提取?,java,maven,maven-2,maven-3,artifactory,Java,Maven,Maven 2,Maven 3,Artifactory,我是一名Apache Archiva的老手,最近转为Artifactory Pro。我一直试图在Artifactory中复制一个设置,在这个设置中,我在Archiva中实现了虚拟的私有存储库。最终结果应该是,不同的团队可以访问自己团队的工件、远程回购、默认本地回购和公司范围的存储库 但是,每当我将Maven settings.xml配置为使用我的私有虚拟存储库时,我都很难只下载一些依赖项,这些依赖项在Maven Central上可用并从Maven Central中提取。如果我使用Artifact

我是一名Apache Archiva的老手,最近转为Artifactory Pro。我一直试图在Artifactory中复制一个设置,在这个设置中,我在Archiva中实现了虚拟的私有存储库。最终结果应该是,不同的团队可以访问自己团队的工件、远程回购、默认本地回购和公司范围的存储库

但是,每当我将Maven settings.xml配置为使用我的私有虚拟存储库时,我都很难只下载一些依赖项,这些依赖项在Maven Central上可用并从Maven Central中提取。如果我使用Artifactory的default settings.xml(libs release、libs snapshot、plugins release、plugins snapshot和no virtual repository),那么我可以下载Maven Central上可用的以及我的项目所需的所有依赖项

我正在WindowsServer2012虚拟服务器中提供的Tomcat上运行ArtifactoryV4.4.2。我不是在代理后面跑。我和阿奇瓦没有这样的问题

关于我的私有虚拟存储库设置,我有一个名为“test”的虚拟存储库,它是一个“通用”包类型。该存储库包括以下回购协议:

  • 远程回购
  • libs发布
  • libs快照
  • 插件发布
  • 插件快照
  • 本地测试发布
  • 本地测试快照
  • 公司发布本地
  • 公司快照本地
列出的前5个repo是Artifactory提供的默认虚拟存储库repo。最后列出的4份回购协议为本地回购协议,属于通用包类型

我想我应该用一面镜子

下面是我正在使用的settings.xml示例(我的用户名和密码将在生成的settings.xml中填充,并保存到Maven conf文件夹中):


${security.getCurrentUsername()}
${security.getEscapedEncryptedPassword()!“***在此处插入加密密码***”}
中心的
${security.getCurrentUsername()}
${security.getEscapedEncryptedPassword()!“***在此处插入加密密码***”}
快照
*
测试
http://localhost:8082/artifactory/test
测试
假的
中心的
libs发布
http://localhost:8082/artifactory/libs-释放
快照
libs快照
http://localhost:8082/artifactory/libs-快照
假的
中心的
插件发布
http://localhost:8082/artifactory/plugins-释放
快照
插件快照
http://localhost:8082/artifactory/plugins-快照
人工制品
人工制品
我无法通过虚拟存储库从Maven Central中提取的一个工件示例是poi-ooxml-schemas-3.10-FINAL.jar或许多ApacheMaven插件。一旦删除镜像部分,我就可以从Maven Central下载所有依赖项。这对我来说毫无意义。我的虚拟存储库配置为包含远程repos虚拟存储库,因此应该能够从Maven Central提取所有内容


我做错了什么?

好的。我自己找到了部分答案,通过JFrog支持部门的帮助找到了另一部分答案

以下是我发现的第一组问题:

  • 我注意到,如果我使用一个泛型类型的虚拟存储库和一个泛型类型的本地存储库,那么工件检索将下载我的pom的大部分依赖项,但不是所有依赖项
  • 我注意到,如果我使用一个泛型类型的虚拟存储库和一个Maven类型的本地存储库,那么工件检索将下载我的pom的大部分依赖项,但不是所有依赖项
  • 这些问题对我来说似乎是个问题

    因此,我最终定义了一个虚拟存储库(在下面的配置中名为testmaven)和两个本地存储库,它们都是maven类型。这两个本地存储库包含在虚拟存储库中

    我提出了一个settings.xml,但它使用了一个镜像,JFrog支持人员建议我这不是一个最佳实践。记住这个建议,下面是对我有用的final settings.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <servers>
        <server>
          <username>USERNAME</username>
          <password>PASSWORD</password>
          <id>test-maven</id>
        </server>
      </servers>
      <profiles>
        <profile>
          <repositories>
            <repository>
              <snapshots />
              <id>test-maven</id>
              <name>test-maven</name>
              <url>http://localhost:8082/artifactory/test-maven</url>
            </repository>
          </repositories>
          <pluginRepositories>
            <pluginRepository>
              <snapshots />
              <id>test-maven</id>
              <name>test-maven</name>
              <url>http://localhost:8082/artifactory/test-maven</url>
            </pluginRepository>
          </pluginRepositories>
          <id>artifactory</id>
        </profile>
      </profiles>
      <activeProfiles>
        <activeProfile>artifactory</activeProfile>
      </activeProfiles>
    </settings>
    
    
    用户名
    密码
    测试专家
    测试专家
    测试专家
    http://localhost:8082/artifactory/test-马文
    测试专家
    测试专家
    http://localhost:8082/artifactory/test-马文
    人工制品
    人工制品
    

    使用此配置,我验证了我可以下载发布到Maven Central的所有工件、进一步的远程存储库、本地snapshot Maven存储库中的快照以及本地snapshot Maven存储库中的版本。这个设置允许我为每个开发团队使用私有存储库。

    好吧,这里的实际情况似乎是与通用虚拟存储库的预定义属性相关的。 在修复之前,建议的解决方法是基于简单的默认布局创建新的存储库布局。 因此,与简单的默认布局不同: [orgPath]/[module]/[module]-[baseRev]([fileItegRev])[ext]

    应创建如下所示的新布局: [orgPath]/[module]/[module]-[baseRev].[ext]

    创建此新存储库布局后,可以将已定义的存储库布局更改为新创建的布局

    这将修复您提到的行为

    一旦我删除镜像部分,我就可以从
    <?xml version="1.0" encoding="UTF-8"?>
    <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <servers>
        <server>
          <username>USERNAME</username>
          <password>PASSWORD</password>
          <id>test-maven</id>
        </server>
      </servers>
      <profiles>
        <profile>
          <repositories>
            <repository>
              <snapshots />
              <id>test-maven</id>
              <name>test-maven</name>
              <url>http://localhost:8082/artifactory/test-maven</url>
            </repository>
          </repositories>
          <pluginRepositories>
            <pluginRepository>
              <snapshots />
              <id>test-maven</id>
              <name>test-maven</name>
              <url>http://localhost:8082/artifactory/test-maven</url>
            </pluginRepository>
          </pluginRepositories>
          <id>artifactory</id>
        </profile>
      </profiles>
      <activeProfiles>
        <activeProfile>artifactory</activeProfile>
      </activeProfiles>
    </settings>
    
    <servers>
        <server>
            <username>USERNAME</username>
            <password>PASSWORD</password>
            <id>test-maven</id>
        </server>
        <server>
            <!-- credentials for mirror -->
            <username>USERNAME</username>
            <password>PASSWORD</password>
            <id>test</id>
        </server>
    </servers>