如何为Maven设置Archiva内部+快照存储库?

我们正在尝试将Archiva用作中央和其他外部存储库的Maven代理,并将其作为我们工件的快照存储,这些工件由Hudson从SVN自动构建并安装到快照存储库。

我无法设置我的Maven客户端以一起使用内部和快照存储库。 我的项目有一些外部依赖项(如log4j ),它们可以正确地从Archiva内部存储库下载。 此外,我的项目依赖于一个自己的项目,该项目的工件已经构建并安装到快照存储库中。 但是,如果我尝试构建项目,Maven无法找到我的快照工件。

我的配置文件原来是这个设置:

  company-internal Company's Archiva - Internal Repository http://www.mycompany.hu/archiva/repository/internal *  

然后我添加了以下内容:

  company-snapshots Company Archiva - Snapshots Repository http://www.mycompany.hu/archiva/repository/snapshots apache.snapshots  

但是,Maven不会尝试在构建时查找snaphot存储库。 我做错了什么? 顺便说一下,我并没有真正得到元素的目的。 我试图将内部镜像设置替换为central但这仍然无法解决我的问题。

经过一些试验和错误后,以下配置对我有用。 在这里,我使用默认的archiva配置 – internal用于保存版本和snapshots以仅保留内部快照。

基本上与nexus不同,我们需要两个单独的声明 – 一个用于普通工件,另一个用于快照工件。

   archiva * http://localhost:8080/archiva/repository/internal   snapshots snapshots http://localhost:8080/archiva/repository/snapshots      true    internal Archiva Managed Internal Repository http://localhost:8080/archiva/repository/internal/  true   false    snapshots Archiva Managed Internal Repository http://localhost:8080/archiva/repository/snapshots/  false   true      

通过大量的反复试验,我得出了一个与Raghuram非常相似的配置。 然而,使用archiva,我发现了一两件可能仍然值得注意的事情。 另外,我使用我的配置中的镜像来访问我的项目(在pom.xml中的中设置),而不是直接访问存储库。

这是我的maven settings.xml的相关部分:

    my.snapshots  user pwd       archiva.default * http://server:port/archiva/repository/internal/    my.snapshots archiva.snapshots http://server:port/archiva/repository/snapshots/      true     archiva.snapshots  http://server:port/archiva/repository/snapshots/  false   true     

我发现我必须在部分给出不同于部分的id,所以我似乎不允许给他们与Raghuram一样的名字。

现在,使用settings.xml,我开始更改项目的pom.xml中的部分。 确切地说,我在一个pom中更改了此设置,该pom是我所有项目的父级:它主要包含部分,其他几乎没有。 这个父pom本身已部署到archiva。

这是父pom.xml的相关部分:

   ...   my.snapshots Archiva Managed Snapshot Repository http://server:port/archiva/repository/snapshots default   

这种精简的东西,我认为它有一些好处:

  • 我现在能够根据我自己的工件(包括父pom)构建项目,而我的本地构建存储库中没有这些工件(我擦除了我的本地存储库以进行测试)。

  • 下载(pom.xml的部分)以及上传(pom.xml的部分)现在通过镜像处理。

通过大量的试验和错误我也得到了一个非常相似的配置,但事情并没有为我锻炼,直到我做了以下配置。 因此,如果您在组织存储库的帮助下使用maven而不是在localhost中使用maven,那么我会发布它以尝试改进答案。

这个答案适用于那些需要为您的组织维护多个存储库的多个镜像配置的人,那么这将作为一个例子。

my.snapshots用户pwd

     my.snapshots archiva.snapshots   archiva.default central < !-- Instead of *, replace it with "central"--> http://server:port/archiva/repository/internal/      true     archiva.snapshots  http://server:port/archiva/repository/snapshots/  false   true     
Interesting Posts