将远程FTP设置为远程Maven存储库?

时间:2011-04-25 15:16:15

标签: eclipse maven repository

我们已经与maven合作了很长一段时间,我们正努力将它提升到一个新的水平......

有几个Jars,我们只允许访问我们组织中的人员。所以一开始我们都在settings.xml中引用了与本地存储库相同的共享文件夹,并且当一个人在一个项目上工作时,它有一段时间了。

现在,我们希望拥有自己的“远程存储库”,如果它是如何被调用的,一个远程FTP将保存存储库,HTTP域指向该FTP上的存储库文件夹。

出于某种原因,我们可以部署Jar,Sources和JavaDocs,但是我们无法重建存储库的索引。我们假设FTP存储库需要某种索引文件,但我们无法使用Nexus或Artifactory创建这些文件。 (我们对远程存储库的理解存在根本性的错误)

所以我们的问题是,我们做什么错误

我们从Eclipse获得的错误:

无法更新存储库的索引| http:// domain-refer-to-the-ftp-repository-folder

我们已将settings.xml更新为:

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
<localRepository>
    c:\localRepository\
</localRepository>
<servers>
    <server>
        <username>user</username>
        <password>pass</password>
        <id>rep-id</id>
    </server>
</servers>
<mirrors>
    <mirror>
        <mirrorOf>rep-id</mirrorOf>
        <name>My Repository</name>
        <url>http://domain-referring-to-the-ftp-repository-folder</url>
        <id>repository</id>
    </mirror>
</mirrors>
</settings>

只是为了确保部署配置有效,并如上所述进行部署:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <altDeploymentRepository>rep-id::default::ftp://x.x.x.x/repository</altDeploymentRepository>
            </configuration>
        </plugin>

提前致谢,

亚当。

2 个答案:

答案 0 :(得分:2)

您的ftp存储库没有m2eclipse请求的存储库索引文件。因此消息。

消息本身无需担心。如果正确/明确指定groupId / projectId,则应下载此存储库中的依赖项。

您可能需要查看this related SO帖子以及其中提到的链接。

答案 1 :(得分:2)

共享本地存储库真的很糟糕:本地存储库应该被视为在开发人员机器上运行的Maven的私有缓存...首先,它根本不是并发安全的,所以你必须很幸运(或者真的非工作)交错项目)到目前为止没有遇到任何问题。

您对远程存储库的想法很好,但是它的实现存在一些问题。 MRM(Maven Repository Manager,Artifactory和Nexus都是MRM等等)将解决您的所有问题。

首先,我建议您阅读以下内容: http://www.sonatype.com/books/nexus-book/reference/ http://www.sonatype.com/books.html

还有一些博客: http://www.sonatype.com/people/2011/04/how-not-to-download-the-internet/

简而言之:对于传输,请使用HTTP以获得最佳结果。 Maven和MRM对它有最好的支持。拥有MRM时,你不需要任何“infra”,比如带有HTTPd或FTP守护进程的FS服务器,因为MRM本身不仅托管你的部署,它将它们分享给你的队友,还有代理,保护它们,索引他们等等。

从您的问题来看,目前还不清楚为什么要使用FTP进行部署(MRM中没有一个支持FTP传输,至少不支持AFAIK),您的工件位于何处以及许多其他细节。阅读docos,为您的商店建立美好而舒适的生态系统!

祝你好运!

注意:作为Nexus领导开发者,我与Sonatype和Nexus有联系。