如何定义从一个远程和一个本地仓库中提取的POM?

时间:2015-10-26 11:15:22

标签: android maven

就是这样。我想知道如何构建pom.xml和setting.xml,以便我的构建将检查两个repo。服务器仓库和本地仓库?我怎样才能做到这一点。请清楚描述。不是哦,你必须将LocalRepo添加到setting.xml。做过某事。它没有告诉使用multi。把它放在pom中,它只是忽略了本地仓库,如果它不在服务器上则转到服务器上。我知道这是初学者的问题,所以请回答。没有一些小的信息片段,比如设置在pom中?为什么不在pom?以及如何设置?仅仅添加localRepo还不够?是否需要了解情况?等

在我的settings.xml中:

  <mirrorOf>*</mirrorOf>
        <url>http://myserver:8080/nexus/content/groups/public</url>
    </mirror>
</mirrors>

只要这个镜像在那里,它似乎只检查这个repo url,如果它找不到它寻找的东西,则提供错误等待下一次更新。它从不检查当地的回购。我怎样才能保留这个镜子,还要检查额外的回购?

1 个答案:

答案 0 :(得分:1)

我不喜欢对Maven的咆哮,所以我会尽可能地描述。

有两种方法可以向Maven添加新的存储库,也就是说告诉Maven它应该在哪里查找依赖项。

  • 在POM中。
  • 在用户或全局设置中。

POM

在POM中,通过在<build> <repositories> <repository>元素中声明它来添加存储库。

<project>
...
  <repositories>
    <repository>
      <id>my-repo1</id>
      <name>your custom repo</name>
      <url>http://jarsm2.dyndns.dk</url>
    </repository>
    <repository>
      <id>my-repo2</id>
      <name>your custom repo</name>
      <url>http://jarsm2.dyndns.dk</url>
    </repository>
  </repositories>
...
</project>

用户/全局设置

通过修改~/.m2/settings.xml文件(用于用户设置)或$M2_HOME/conf/settings.xml(用于全局设置)来完成此操作。在这种情况下,存储库将添加到默认情况下处于活动状态的配置文件中:

<settings>
 ...
 <profiles>
   ...
   <profile>
     <id>myprofile</id>
     <repositories>
       <repository>
         <id>my-repo2</id>
         <name>your custom repo</name>
         <url>http://jarsm2.dyndns.dk</url>
       </repository>
     </repositories>
   </profile>
   ...
 </profiles>

 <activeProfiles>
   <activeProfile>myprofile</activeProfile>
 </activeProfiles>
 ...
</settings>

希望这很清楚。

  • 对于本地存储库,URL为:file://path/to/repo
  • 对于远程存储库,URL为:http[s]://path/to/repo

现在,it is considered a best practice将此信息放在设置而不是POM中,因为此信息对于您拥有的每个项目通常都是相同的。这是公司信息,我们需要在全球范围内对待它,而不是每个项目。如果您需要每个项目,那么您可以将其添加到您的POM。结果将是相同的。

通过指定发布或快照模式,更新策略等,存储库可以是further configured。请参阅有关此文档的文档。

镜像

在编辑中,您正在使用镜像。要将镜像配置为仅用于特定存储库,可以在设置中进行以下配置:

<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">
  ...
  <mirrors>
    <mirror>
      <id>my-wonderful-mirror</id>
      <url>http://myserver:8080/nexus/content/groups/public</url>
      <mirrorOf>id-of-your-repository</mirrorOf> <!-- this is the ID of the repository, i.e. what is inside settings > profiles > profile > repositories > repository > id -->
    </mirror>
  </mirrors>
  ...
</settings>

这样,您可以为远程存储库配置镜像,而不是为本地存储库配置镜像。