gpt4 book ai didi

java - 如何从 mvn clean 部署生成的 Maven Artifact 中删除日期时间后缀和增量 #?

转载 作者:行者123 更新时间:2023-12-02 09:37:25 29 4
gpt4 key购买 nike

我有一个Spring Boot基于java正在生成 JAR 的应用程序当我运行mvn clean install时 Artifact 名为 my-nexus-demo-0.0.1-SNAPSHOT.jar

但是当我这样做时mvn clean deploy我明白了my-nexus-demo-0.0.1-20190806.161150-1.jar部署在我的本地文件系统中(将来将使用Nexus)。不知道为什么当我使用 mvn clean deploy 时它会附加日期时间和增量 # 作为后缀命令。

我已经提到过<finalName>${project.artifactId}</finalName>在我的pom并指定<uniqueVersion>false</uniqueVersion>也是如此。

我有几个问题:

  1. 如何在 .m2 中获得一致的 Artifact 名称以及两者SNAPSHOTRELEASE repo 协议(protocol)?
  2. 开发人员在构建和部署 Artifact 时应遵循的最佳实践是什么? Artifact 名称不应该始终保持一致吗?

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>my-nexus-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>my-nexus-demo</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

<distributionManagement>
<snapshotRepository>
<id>pet-projects-snapshot-repo</id>
<name>My Local Nexus Snapshots Repository</name>
<url>file://I/.m2/my-nexus/pet-projects-snapshot-repo</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>

</project>

最佳答案

您所描述的是预期的行为。在本地,由于快照版本仅以后缀 0.0.1-SNAPSHOT 保存,而在远程存储库(您部署 到的存储库)上,快照版本会使用时间戳保存。不过,这并不重要,因为如果您请求版本 0.0.1-SNAPSHOT 的依赖项,Maven 足够智能,可以为您提供该特定版本号的最新时间戳版本。所以它实际上只不过是一个实现细节。

当您的 Artifact 准备好投入生产时,您可以构建一个发布版本(例如使用 maven-release-plugin)并获得不带快照或时间戳的版本号。

关于java - 如何从 mvn clean 部署生成的 Maven Artifact 中删除日期时间后缀和增量 #?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57381258/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com