在哪里是为maven项目指定所需存储库的最佳位置,pom.xml或者settings.xml?每个地点的利弊是什么?什么是最佳做法?
在我看来,由于以下几个原因,在POM中定义存储库更好:
也许一个问题是,如果存储库的位置将来发生变化,则需要安装代理或者需要释放旧软件的补丁版本,指定新的存储库位置(或者.m2/settings.xml总是可以提供额外的存储库作为最后的手段).然而,这似乎是在发布管理中的良好再现性和可移植性的必要结果,而不是con.
还有其他想法吗?
Pas*_*ent 54
为maven项目,pom.xml或settings.xml指定所需存储库的最佳位置在哪里?每个地点的利弊是什么?什么是最佳做法?
我个人定义项目中特定项目所需的存储库,pom.xml因为它使构建可移植.settings.xml仅在我看来,该文件应该用于特定于用户或秘密的事物.不,真的,要求用户添加存储库位置,即使这是正确记录的,以某种方式击败了maven的一个功能(透明依赖性处理),我不喜欢这个想法.
我可以想到settings.xml用来处理存储库的唯一"好"用例是当你有一个公司存储库并希望Maven使用这个存储库而不是公共存储库时.例如,要避免与任何公共存储库的连接,您可以将公司存储库声明为所有公共存储库的镜像:
<settings>
  ...
  <mirrors>
    <mirror>
      <id>proxy-of-entire-earth</id>
      <mirrorOf>*</mirrorOf>
      <name>Maven Repository Manager running on repo.mycompany.com</name>
      <url>http://repo.mycompany.com/proxy</url>
    </mirror>
  </mirrors>
  ...
</settings>
我将向您说明为什么您应该考虑将存储库 URL 存储在settings.xml而不是 中的三个原因pom.xml:
如果您有一个公司存储库并且您正在为客户构建一个项目,并且您必须在最后交付源代码,则最好在 settings.xml 中配置存储库。您不希望每次在您的办公室外建造项目时都会到达您的 Artifactory(或类似工厂)。
Sonatype 的人建议将 URL 放在settings.xml.
如果依赖项存储库出现故障(想想java.net),您只需在一处更正 URL。如果你使用pom.xml所有以前的版本都坏了。您可能必须为pom.xml每个发布版本提交一个固定的版本。
配置 URL 的settings.xml工作量比pom.xml? 绝对地。
它会给你带来更多的灵活性吗?绝对地。
这是settings.xml应该的样子:
<settings>
    <profiles>
        <profile>
            <id>mycompany-servers</id>
            <repositories>
                <repository>
                    <id>mycompany-release</id>
                    <url>https://mycompany.com/release/</url>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>mycompany-snapshot</id>
                    <url>https://mycompany.com/snapshot/</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>mycompany-servers</activeProfile>
    </activeProfiles>
    <servers>
        <server>
            <id>mycompany-release</id>
            <username>your-username</username>
            <password>your-api-key</password>
        </server>
        <server>
             <id>mycompany-snapshot</id>
             <username>your-username</username>
             <password>your-api-key</password>
        </server>
    </servers>
</settings>
| 归档时间: | 
 | 
| 查看次数: | 25666 次 | 
| 最近记录: |