在maven中构建/部署第三方项目,但上传到我的快照存储库

时间:2013-10-19 14:06:57

标签: maven jenkins archiva

我每周在詹金斯建立一个大型第三方项目(apache sling)。我已经设置了jenkin的settings.xml来使用我自己的archiva服务器来下载所有依赖项(使用镜像部分)。

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

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

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

这是我的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>

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

据我所知,您必须编辑项目的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>

它会帮助你把它放在你继承的公司范围内吗?

答案 2 :(得分:0)

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

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

查看maven deploy plugin

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