设置maven以使用archiva存储库而不使用activeByDefault?

时间:2012-03-20 05:24:39

标签: maven archiva

我非常接近最终使用archiva和maven进行工作设置。

最后一件令我难以置信的事情是如何设置我的内部和快照存储库 - 而不使用包含activeByDefault设置为true的配置文件。

我正在使用SUPER super pom - 一个公司范围的pom,其中包含发行版的发布管理信息。我以为我可以在这个pom中指定存储库,并在settings.xml中配置身份验证设置?我可以使用没有配置文件的存储库标记吗?应该没有"简介"对于我的内部和快照存储库,因为它们永远不会改变...

我试图避开的是使用"默认"配置文件,始终处于活动状态。我听说activeByDefault不是最佳做法,我也不打算使用它。

话虽如此,我该怎么做呢?我的内部仓库是maven中央仓库的镜像,所以我想锁定我的开发人员只使用我们的内部工件服务器。请记住 - 我不希望将activeByDefault设置为true的配置文件。我不能强调这一点!我应该使用Maven镜子吗?我应该添加"额外的存储库?

如果我使用存储库标记而不是镜像标记,maven强制构建只使用我的archiva设置,而不是默认的maven中心吗?

或者是我想要完成的只能使用maven中的镜像标签来完成的事情?我知道如何在使用存储库标记时配置repo凭据,但不能使用镜像。这是怎么做到的?是否为镜像标记中的任何内容提供与存储库标记中的任何内容相同的凭据?

我错过了一些明显的东西吗?我已经在这里使用maven进行操作了。我知道它最终会值得,但它肯定会导致我大量的恶化,资源似乎很少。要么是这样,要么人们满足于使用它,但他们喜欢不考虑最佳实践。

谢谢

1 个答案:

答案 0 :(得分:7)

要将内部存储库用作中央镜像,您需要设置这样的镜像(在settings.xml中):

<mirrors>
    <mirror>
        <id>my-internal-repo</id>
        <mirrorOf>central</mirrorOf> // use * for do mirror of all
        <name>Clinker Maven Repository</name>
        <url>http://my-repo-host/my-repo-path</url>
    </mirror>
</mirrors>

如果my-internal-repo受到保护,您可以设置凭据:

<servers>
    <server>
        <id>my-internal-repo</id>
        <username>youruser</username>
        <password>yourpassword</password>
    </server>
</servers>

请注意,服务器ID标记内容应与镜像的ID匹配。

要使用您的internal-snapshots存储库,您必须在项目POM中设置存储库,因为快照工件的使用应该在项目级别进行控制和明确定义,而不是在设置级别:

<repository>
    <id>internal-snapshots</id>
    <url>http://your-repo-host/internal-snapshots-path</url>
    <releases>
        <enabled>false</enabled>
    </releases>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>

最后,您必须从镜像中排除internal-snapshots

<mirrors>
    <mirror>
        <id>my-internal-repo</id>
        <mirrorOf>central, !internal-snapshots</mirrorOf> // use * to do mirror of all
        <name>Clinker Maven Repository</name>
        <url>http://my-repo-host/my-repo-path</url>
    </mirror>
</mirrors>

并添加服务器(如果受保护):

<servers>
    <server>
        <id>my-internal-repo</id>
        <username>youruser</username>
        <password>yourpassword</password>
    </server>
    <server>
        <id>internal-snapshots</id>
        <username>youruser</username>
        <password>yourpassword</password>
    </server>
</servers>