当前位置: 首页 > 知识库问答 >
问题:

如何以编程方式使用存储在Nexus中的旧快照工件

米丰
2023-03-14

在我们的构建和部署基础结构中,我们有一个Jenkins的工作来构建我们的多模块Maven项目,最近已经将结果工件(包括一个总括tarball)部署到Nexus。然后另一个作业(有时由成功的构建作业触发)运行deploy,它根据构建作业运行的POM从Nexus提取所需的工件(构建作业归档POM,以便通过使用dependency:Copy goal检索tarball)。对于发行版,这很好,如果需要回滚场景,我们甚至可以部署更早的版本。但是,对于快照构建,这是分解的,因为除了工件是-SNAPSHOT之外,POM不包含任何版本标识符。

[INFO] Uploading: http://nexus.eng.company.com/nexus/content/repositories/snapshots/com/company/application/application-dist/4.19.3-SNAPSHOT/application-dist-4.19.3-20160819.223606-7-eng.tar.gz

[INFO] Uploaded: http://nexus.eng.company.com/nexus/content/repositories/snapshots/com/company/application/application-dist/4.19.3-SNAPSHOT/application-dist-4.19.3-20160819.223606-7-eng.tar.gz (109687 KB at 413.1 KB/sec)

但是有没有更好的办法呢?我们特别试图允许的情况是开发人员部署早期构建(通常是部署特性分支构建),但目前这是不可能的,除非我找到一种方法来获取datestamped版本标识符。

共有1个答案

鄢松
2023-03-14

一个可能的解决方案是创建一个动态属性来使用分类器。在这种情况下,build-helper-maven-plugin可以提供帮助,例如:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.10</version>
    <executions>
        <execution>
            <id>regex-property</id>
            <goals>
                <goal>timestamp-property</goal>
            </goals>
            <configuration>
                <name>custom.classifier</name>
                <pattern>yyyy-MM-dd_HH-mm-ss.SSS</pattern>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
        <classifier>${custom.classifier}</classifier>
    </configuration>
</plugin>

上面我们创建了一个新的属性custom.classifier,并用pattern元素定义的时间戳填充它(精心编制,这样就不会出现空格或无效字符,因为classifier将成为最终文件名的一部分)。

然后,maven-jar-plugin用例相应地设置分类器。

然后,您可以将上面的行为进一步包装在Maven概要文件中,以便只为CI作业激活它。

 类似资料:
  • 我想将jar发布到Nexus快照存储库。 如果你知道如何实现,我很想知道。 我将从詹金斯的工作中发布jar。 我想发布到快照存储库,但我无法调查/实现各种事情。 根据我的研究,似乎已经有了下面的Jenkins插件 null 卷曲时的错误信息如下所示。 谢谢你。

  • 我们正在使用Nexus来部署我们的快照工件。我们的构建服务器在每次构建期间使用以下命令部署它们:mvn deploy。因此,在每次构建时都会部署工件的较新版本。已经有大约几十个工件被部署到存储库,当然我们只需要最后一个工件的问题。有什么方法可以限制Nexus中部署的快照工件的数量吗?谢谢你的帮助,迈克尔

  • 问题内容: 我们正在使用Nexus部署快照工件。我们的构建服务器使用以下命令在每次构建期间部署它们:mvn deploy。结果,在每个构建上都部署了工件的较新版本。已经将大约数十个工件部署到存储库的问题,当然我们只需要最后一个工件。有什么方法可以限制Nexus中已部署快照工件的数量?谢谢迈克尔的帮助 问题答案: 创建计划任务以清除旧快照。 以下链接描述了功能: Nexus预定任务 管理计划的任务-

  • 问题内容: 如何通过UIViewController扩展的任何类以编程方式创建选项卡: 问题答案: 更新SWIFT 5 如何以编程方式创建的一个示例如下所示: 首先,我们创建标签栏界面的每个标签的内容。对于此示例,我们仅创建一个非常简单的示例。 现在,: 我们创建了要显示在标签栏中的的新实例。然后,我们为创建的每个实例创建一个图标,然后创建一个数组,其中包含所有为标签栏界面的每个标签指定内容的数组

  • 问题内容: 有没有一种方法可以在Windows中创建链接? 我发现使用的样本或必须下载的样本。 我需要一个简单的解决方案。那可能吗? 问题答案: 好了,我不得不使用创建快捷方式的方法,但是实际上我需要的是一个文件夹,但是会创建一个。 最终我用来创建。

  • 我是Maven的新手,我的目标是在像(Nexus)这样的存储库中发布一个APK。这个APK是在Jenkins中用Unity3dBuilder插件构建的。我在jenkins的工作是一个Maven2/3项目,因此我需要配置我的pom.xml,以便能够发布我的工件(apk)。 请帮忙!!??