Maven:如何设置我的pom.xml,以便它可以通过HTTP获取依赖关系并通过FTP部署模块

时间:2014-06-03 18:34:37

标签: http maven ftp maven-wagon-plugin

我正在尝试为我的一个项目设置pom.xml。我无法弄清楚如何通过HTTP获取依赖关系,但是通过FTP部署新的工件。

这是情况。我有一个多模块项目,我正在与其他人合作。我也碰巧租了一台便宜的网络服务器,可以让我通过maven存储库分享我的一些模块的发布和快照版本。

我希望部署到存储库进行身份验证(以便只有经过授权的人才能写入)并通过FTP完成。

另一方面,我希望每个人都能够通过HTTP匿名下载已发布的工件版本。

到目前为止,我发现的唯一一件事就是将以下部分添加到我的pom.xml

<distributionManagement>
    <snapshotRepository>
        <id>my.repo.snapshots</id>
        <name>My Repository - Snapshots</name>
        <url>${url}/snapshots</url>
    </snapshotRepository>
    <repository>
        <id>my.repo.releases</id>
        <name>My Repository - Releases</name>
        <url>${url}/releases</url>
    </repository>
</distributionManagement>

此设置的问题在于它不允许我选择FTP上传和HTTP下载。

有没有办法配置我的pom.xml来做到这一点?

1 个答案:

答案 0 :(得分:0)

原来解决方案就在我的鼻子底下。用于部署工件的存储库确实是通过<distributionManagement/>配置的,但是用于获取工件的存储库是通过<repositories>部分中的<profiles>元素配置的。

我的工作pom.xml配置现在包括:

<distributionManagement>
    <repository>
        <id>deploy.releases</id>
        <name>Repository - Releases</name>
        <url>ftp://ftp.domain.com/releases/</url>
    </repository>
    <snapshotRepository>
        <id>deploy.snapshots</id>
        <name>Repository - Snapshots</name>
        <url>ftp://ftp.domain.com/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

<profiles>
    <profile>
        <id>project.default</id>

        <activation>
            <property>
                <name>!skipProjectDefaultProfile</name>
            </property>
        </activation>

        <repositories>
            <repository>
                <id>repo.releases</id>
                <url>http://maven.domain.com/releases/</url>
            </repository>
            <repository>
                <id>repo.snapshots</id>
                <url>http://maven.domain.com/snapshots/</url>
            </repository>
        </repositories>
    </profile>
</profiles>

最重要的是,我的settings.xml包含FTP的身份验证信息

<servers>
    <server>
        <id>deploy.releases</id>
        <username>user</username>
        <password>pass</password>
    </server>
    <server>
        <id>deploy.snapshots</id>
        <username>user</username>
        <password>pass</password>
    </server>
</servers>