用于更新依赖项中版本的 mvn 命令和一个使用依赖项的项目
mvn command for updating version in dependency and one project that uses the dependency
我正在尝试找出更新 POM 文件中版本的最佳实践,该文件被其他几个 Java 项目使用。我是 Java 和 Maven 的新手,但不是 OOP 和 semver。
我使用 Maven 构建系统接管了一些 git 带有 Java 代码的回购协议。我需要向其他几个存储库使用的“核心”存储库添加新功能,即使我只需要一个存储库即可从新功能中受益。我的希望是让其他回购保持不变。如果其他存储库被某些 devops 进程重新部署,我希望他们使用“核心”版本,而无需我添加到“核心”的任何更改。
我想我应该在将其工件存储在 Nexus 之前更新“核心”存储库的 POM 文件中的版本,这样其他存储库就不会下载包含我的更改的“核心”版本。我应该使用什么 mvn
命令?
现在,“核心”库声明其版本如下:
<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>
<groupId>com.company.team</groupId>
<artifactId>foo-core</artifactId>
<version>1.0.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>foo-core</name>
<url>http://maven.apache.org</url>
<blah/>
<blah/>
</project>
使用“核心”的项目的 POM 如下所示:
<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>
<groupId>com.company.team</groupId>
<artifactId>bar</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<description>Bar</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>com.company.team</groupId>
<artifactId>foo-core</artifactId>
<version>1.0.4-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
我不确定 <parent>
什么时候是一个有用的标签,但我注意到它没有被用来将应用程序存储库连接到“核心”存储库。
我想我想更新 POM
- 核心
- 并且对于使用核心的一个项目,而不是其他也使用核心的项目。
我解释了一个事实,即版本 -SNAPSHOT
被所有其他项目用于引用“核心”,告诉我没有为“核心”创建“发布”,至少在当前版本。如果我想让“核心”容器的版本我的功能是 1.0.5-SNAPSHOT,我可以跳过 1.0.4 的发布吗?
我需要在“核心”存储库和我想使用新版本的一个项目的存储库中执行哪些命令?我认为有些命令只是修改 POM,但其他命令会将构建发布到 Nexus。
或者我可以只在 POM 中键入一个新数字并 运行 mvn 命令将构建推送到 Nexus 和新版本吗?如果我只是用文本编辑器更改值,我计划在“核心”的递增版本中保留 -SNAPSHOT
一词,并在我想使用新功能的应用程序中保留对“核心”的引用.然后我只需要将核心发布到 Nexus。
--- 更新 ---
我了解到此命令会增加“核心”中的版本号。这似乎不必要地复杂,因为在 CLI 提示时您仍然需要输入完整的版本值(我输入了“1.0.5-SNAPSHOT”)。
mvn versions:set nestSnapshot
我想这就是您更新应用程序以使用最新版本的依赖项的方式,但我认为它只有在您使用 mvn deploy
.
成功发布依赖项时才有效
mvn versions:use-latest-releases -Dincludes=com.company.team:foo-core -DallowSnapshots=true
您可以转到您提到的两个 POM 文件并更改文件中的版本号。
我会先更改核心版本,然后 运行 构建 mvn clean install
(如果在您的本地计算机上完成)或 mvn clean deploy
(如果您想发送它到您的公司存储库),然后更改其他项目中核心的版本号。
请注意,SNAPSHOT 版本用于开发。当你想发布一些东西时,创建一个发布版本,例如通过 Maven 发布插件。
我正在尝试找出更新 POM 文件中版本的最佳实践,该文件被其他几个 Java 项目使用。我是 Java 和 Maven 的新手,但不是 OOP 和 semver。
我使用 Maven 构建系统接管了一些 git 带有 Java 代码的回购协议。我需要向其他几个存储库使用的“核心”存储库添加新功能,即使我只需要一个存储库即可从新功能中受益。我的希望是让其他回购保持不变。如果其他存储库被某些 devops 进程重新部署,我希望他们使用“核心”版本,而无需我添加到“核心”的任何更改。
我想我应该在将其工件存储在 Nexus 之前更新“核心”存储库的 POM 文件中的版本,这样其他存储库就不会下载包含我的更改的“核心”版本。我应该使用什么 mvn
命令?
现在,“核心”库声明其版本如下:
<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>
<groupId>com.company.team</groupId>
<artifactId>foo-core</artifactId>
<version>1.0.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>foo-core</name>
<url>http://maven.apache.org</url>
<blah/>
<blah/>
</project>
使用“核心”的项目的 POM 如下所示:
<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>
<groupId>com.company.team</groupId>
<artifactId>bar</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<description>Bar</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>com.company.team</groupId>
<artifactId>foo-core</artifactId>
<version>1.0.4-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
我不确定 <parent>
什么时候是一个有用的标签,但我注意到它没有被用来将应用程序存储库连接到“核心”存储库。
我想我想更新 POM
- 核心
- 并且对于使用核心的一个项目,而不是其他也使用核心的项目。
我解释了一个事实,即版本 -SNAPSHOT
被所有其他项目用于引用“核心”,告诉我没有为“核心”创建“发布”,至少在当前版本。如果我想让“核心”容器的版本我的功能是 1.0.5-SNAPSHOT,我可以跳过 1.0.4 的发布吗?
我需要在“核心”存储库和我想使用新版本的一个项目的存储库中执行哪些命令?我认为有些命令只是修改 POM,但其他命令会将构建发布到 Nexus。
或者我可以只在 POM 中键入一个新数字并 运行 mvn 命令将构建推送到 Nexus 和新版本吗?如果我只是用文本编辑器更改值,我计划在“核心”的递增版本中保留 -SNAPSHOT
一词,并在我想使用新功能的应用程序中保留对“核心”的引用.然后我只需要将核心发布到 Nexus。
--- 更新 ---
我了解到此命令会增加“核心”中的版本号。这似乎不必要地复杂,因为在 CLI 提示时您仍然需要输入完整的版本值(我输入了“1.0.5-SNAPSHOT”)。
mvn versions:set nestSnapshot
我想这就是您更新应用程序以使用最新版本的依赖项的方式,但我认为它只有在您使用 mvn deploy
.
mvn versions:use-latest-releases -Dincludes=com.company.team:foo-core -DallowSnapshots=true
您可以转到您提到的两个 POM 文件并更改文件中的版本号。
我会先更改核心版本,然后 运行 构建 mvn clean install
(如果在您的本地计算机上完成)或 mvn clean deploy
(如果您想发送它到您的公司存储库),然后更改其他项目中核心的版本号。
请注意,SNAPSHOT 版本用于开发。当你想发布一些东西时,创建一个发布版本,例如通过 Maven 发布插件。