0

我每周在 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>
4

3 回答 3

0

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

于 2013-10-19T14:17:01.507 回答
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>

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

于 2013-10-19T15:41:36.660 回答
0

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

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

看看Maven 部署插件

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

于 2013-10-21T16:26:26.090 回答