如何将Maven外部存储库配置为特定于依赖项

时间:2018-02-06 18:26:26

标签: java maven

在我的Maven配置中,我有6个存储库。 3 Geo Tools Java框架的开源和3加密凭证访问的专有。

    <repository>
        <id>maven2-repository.dev.java.net</id>
        <name>Java.net repository</name>
        <url>http://download.java.net/maven/2</url>
    </repository>
    <repository>
        <id>osgeo</id>
        <name>Open Source Geospatial Foundation Repository</name>
        <url>http://download.osgeo.org/webdav/geotools/</url>
    </repository>
    <repository>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <id>boundless</id>
      <name>Boundless Maven Repository</name>
      <url>http://repo.boundlessgeo.com/main</url>
    </repository>

我添加了此处提到的外部存储库:http://docs.geotools.org/latest/userguide/tutorial/quickstart/eclipse.html

我也添加了插件存储库并更新了我的settings.xml,因此两个存储库都匹配。

    <pluginRepository>
        <id>maven2-repository.dev.java.net</id>
        <name>Java.net repository</name>
        <url>http://download.java.net/maven/2</url>
    </pluginRepository>
    <pluginRepository>
        <id>osgeo</id>
        <name>Open Source Geospatial Foundation Repository</name>
        <url>http://download.osgeo.org/webdav/geotools/</url>
    </pluginRepository>
    <pluginRepository>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <id>boundless</id>
      <name>Boundless Maven Repository</name>
      <url>http://repo.boundlessgeo.com/main</url>
    </pluginRepository>

我甚至下载了这些Geo Tool依赖项所需的jar,并将它们放在我的.m2文件夹中。

    <dependency>
      <groupId>org.geotools</groupId>
      <artifactId>gt-shapefile</artifactId>
      <version>18.2</version>
    </dependency>
    <dependency>
      <groupId>org.geotools</groupId>
      <artifactId>gt-epsg-hsql</artifactId>
      <version>18.2</version>
    </dependency>

但是,当我尝试运行mvn clean install -X时,当Maven尝试将401 Unauthorized org.geotools传入/传出时,我可以看到我收到jar我配置的专有存储库,但我甚至不想让Maven尝试。

如何配置Maven,以便从这3个存储库加载org.geotools.*<id>maven2-repository.dev.java.net</id><id>osgeo</id><id>boundless</id>以及从专有存储库加载?

我听说我可以配置一个代理,但没有人解释我会怎么做。我试图在我的专有存储库中存储Geo Tools所需的罐子,但被告知我不能。我还尝试配置镜像以仅在我的settings.xml中将流量定向到这些外部存储库,如下所示,但我发现无法将jar转移到仅存在于专有存储库中的问题。

<mirrors>
    <mirror>
        <id>boundless</id>
        <name>Boundless Repository Mirror</name>
        <url>http://repo.boundlessgeo.com/main</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

1 个答案:

答案 0 :(得分:1)

我不知道这是否可以使用maven完成,但可以使用Artifactory虚拟存储库完成。其他存储库管理工具应具有类似的概念。 基本上,您设置了Artifactory存储库,您的应用程序应该引用此存储库。您可以在Artifactory中配置应从哪个存储库下载jar。

  

考虑存储库的Include Patterns和Exclude Patterns如下:   包含模式:org / apache / ,com / acme /   排除模式:com / acme / exp-project / **   在这种情况下,Artifactory将在存储库中搜索org / apache / maven / parent / 1 / 1.pom和com / acme / project-x / core / 1.0 / nit-1.0.jar,但不会搜索com / acme / exp- project / core / 1.1 / san-1.1.jar因为com / acme / exp-project / **被指定为Exclude模式。

https://www.jfrog.com/confluence/display/RTF/Common+Settings#CommonSettings-Package

https://www.jfrog.com/confluence/display/RTF/Virtual+Repositories