有条件地在本地包含Maven依赖关系,而不是nexus存储库

我有一个项目A和B。项目B使用项目A作为依赖项。测试更改后,我将项目A发布到Nexus存储库中,可以很好地使用Nexus。但是,无论何时我想在本地测试更改,我都不想将项目A发布到联系。

是否有一种方法可以将项目A的更改本地使用到项目B中,而无需从存储库中读取。有些情况会使maven从本地而不是从Nexus读取项目A。

我想使项目A保持常见的maven依赖性,而不是在Maven概要文件中进行更改。

csuct882 回答:有条件地在本地包含Maven依赖关系,而不是nexus存储库

也许我遗漏了一些明显的观点,但是我认为您可以仅使用新的mvn install version项目A并调整项目B中A的dependency以使用新的版。通过安装项目A,它应该可以在本地项目B中使用,因为它将被安装到本地Maven存储库中。

例如 在项目A的pom.xml

<project>
    <name>A</name>
    <version>1.1.1-new-version-for-testing</version>
</project>

在项目B的pom.xml中

<dependencies>
    <dependency>
        <artifactId>A</artifactId>
        <version>1.1.1-new-version-for-testing</version>
    </dependency>
</dependencies>
,

首先,在您的计算机上有一个本地存储库,其中包含所有依赖项(默认情况下为〜/ .m2,但您可以更改) 您可以将其视为处理您自己的项目所需的依赖项的本地缓存

更改项目A时,可以通过在项目A上运行mvn install来安装“更新”版本。

在执行该命令后,项目B在测试时将不会尝试与Maven存储库联系,并且将从本地存储库中获得项目A的版本。

对于SNAPSHOT依赖性,即使本地存储库中有副本,maven每天也会尝试从Nexus获取更高版本,因为使用快照假定您可以进行每日更改。

但是您有以下选择:

  1. 根本不使用SNAPSHOT-s。无论如何,这是您不应该在生产中执行的操作(我的意思是,当您发布项目B时,它的pom中应包含SNAPSHOT依赖项)

  2. 编译项目B时,假设您在本地存储库中具有所有依赖项,请使用mvn <whatever> -o。这个-o选项意味着maven应该在离线模式下运行,也就是说,它不会尝试完全联系远程存储库。 (顺便说一句,如果您要执行相反的操作(即从Nexus强制下载所有新的依赖项,则可以运行mvn <whatever> -U

本文链接:https://www.f2er.com/3110949.html

大家都在问