【问题标题】:Build/Deploy third-party project in maven but upload to my snapshots repository在 Maven 中构建/部署第三方项目,但上传到我的快照存储库
【发布时间】:2013-10-19 14:06:56
【问题描述】:

我每周在 Jenkins 中构建一个大型第三方项目(apache sling)。我已经将 jenkin 的 settings.xml 设置为使用我自己的档案服务器来下载所有依赖项(使用镜像部分)。

但是,在进行“部署”时,我还没有弄清楚如何让构建上传快照我自己的快照存储库。而是尝试将快照上传到 apache.org 快照服务器并失败。

有没有办法配置 settings.xml 以覆盖快照服务器,就像覆盖存储库一样?这必须在不编辑项目的 pom.xml 的情况下完成。

我需要这样做的原因是因为我需要访问一些快照版本作为另一个项目中的依赖项,并且我不想手动将它们全部上传到档案中。

这是我的 settings.xml:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

<localRepository>/Users/Shared/Jenkins/.m2/repository</localRepository>

<servers>
    <server>
        <id>astra.internal</id>
        <username>-deleted-</username>
        <password>-deleted-</password>
    </server>
    <server>
        <id>astra.snapshots</id>
        <username>-deleted-</username>
        <password>-deleted-</password>
    </server>
</servers>

<mirrors>
    <mirror>
        <id>central-proxy</id>
        <name>Local proxy of central repo</name>
        <url>http://-deleted-.com/repository/internal</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
        <id>snapshots</id>
        <name>Local proxy of snapshots</name>
        <url>http://-deleted-.com/repository/internal</url>
        <mirrorOf>snapshots</mirrorOf>
    </mirror>
</mirrors>

<profiles>
    <profile>
        <id>Repository Proxy</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <!-- ******************************************************* -->
        <!-- repositories for jar artifacts -->
        <profile>
            <!-- ******************************************************* -->
            <repositories>
                <repository>
                    <id>astra.internal</id>
                    <url>http://-deleted-.com/repository/internal/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>

                <repository>
                    <id>astra.snapshots</id>
                    <url>http://-deleted-.com/repository/snapshots/</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
</settings>

【问题讨论】:

    标签: maven jenkins archiva


    【解决方案1】:

    您可以使用命令行参数覆盖分发管理部分。

    mvn clean deploy -DaltDeploymentRepository=ui-snapshots::default::http://localhost:8081/artifactory/libs-snapshot-local/

    看看maven deploy plugin。

    或者,您应该能够使用 Jenkins 后期构建步骤。无论如何,您需要专门提供 Repo url。

    【讨论】:

    • 我会尝试分发管理命令行 arg,但是,如果 arg 不起作用,那么执行 jenkins 后期构建步骤是个好主意。这样我就可以对上传到档案的内容更加挑剔。
    【解决方案2】:

    存储库的位置是 pom.xml 的一部分,distributionManagement 通常位于最上层的父级之一中。所以这不是您可以从 settings.xml 设置的东西。 很有可能您可以使用 distMgmtSnapshotsUrl 属性更改它,请参阅 org.apache:apache:13:pom,假设 sling-project 使用它作为其(间接)父级。

    【讨论】:

      【解决方案3】:

      据我所知,您必须编辑项目的 pom 文件并拥有此部分(当然还有您的服务器设置):

        <distributionManagement>
          <repository>
            <id>archiva.internal</id>
            <name>Internal Release Repository</name>
            <url>dav:http://localhost:8080/repository/internal</url>
          </repository>
          <snapshotRepository>
            <id>archiva.snapshots</id>
            <name>Internal Snapshot Repository</name>
            <url>http://localhost:8080/repository/snapshots</url>
          </snapshotRepository>
        </distributionManagement>
      

      将它放在您继承自的公司范围的 pom 中对您有帮助吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-11
        • 2020-12-08
        • 2011-09-02
        • 1970-01-01
        • 2022-07-25
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多