Java “最好的方法”;mvn链接“;依赖关系?

Java “最好的方法”;mvn链接“;依赖关系?,java,maven,Java,Maven,假设我的机器上有两个项目,ProjectA和ProjectB;ProjectB使用ProjectA作为依赖项 我还分别发布了这两个包。现在我想在本地开发,对A进行更改,但测试在B中。如何在ProjectB中本地“链接”ProjectA,以便在运行ProjectB时,它使用的是本地ProjectA而不是发布的包?首先,在引用maven依赖项时,您可以使用固定版本号,如5.2.0,或SNAPHOT-版本,如5.2.0-SNAPSHOT,其语义为当前正在开发或正在工作。此外,这些版本与存储库中的更新时

假设我的机器上有两个项目,ProjectA和ProjectB;ProjectB使用ProjectA作为依赖项


我还分别发布了这两个包。现在我想在本地开发,对A进行更改,但测试在B中。如何在ProjectB中本地“链接”ProjectA,以便在运行ProjectB时,它使用的是本地ProjectA而不是发布的包?

首先,在引用maven依赖项时,您可以使用固定版本号,如
5.2.0
,或
SNAPHOT
-版本,如
5.2.0-SNAPSHOT
,其语义为当前正在开发或正在工作。此外,这些版本与存储库中的更新时间戳相关联,以确定哪个
SNAPHOT
版本是最新的

项目A:

  • 将根
    .pom
    中的版本更改为
    SNAPHOT
    -版本。(在多模块项目中,您可以使用[1]来代替手动更改每个版本。)
  • 运行
    mvn install
    将您的工件安装到本地maven存储库
项目B:

  • 请参考“依赖项”部分中项目A的新安装的快照版本
  • 运行
    mvn compile
    ,将使用新版本
请记住,版本不应包含对snaphot版本的引用。 要自动化此过程(在快照和发布之间来回更改),可以使用[2]

[1]

  • 使用
    mvn versions:set-DnewVersion=您的新版本来更改版本
  • 然后分别使用
    mvn版本:commit
    mvn版本:rollback

[2]

不太清楚,但您使用的是多模块Maven项目吗?您可以
mvn在本地存储库中安装项目a的快照版本,然后在项目B中引用该快照版本。@fluffy否,这些是完全独立的项目。我正在寻找类似于
npm link
的东西,它可以让您轻松地将本地项目用作您的另一个项目中的依赖项。@Glains如何做到这一点?在项目a的
pom.xml
中,将
版本设置为
x.y.z-SNAPHOT
,然后运行
mvn install
,然后,通过更改依赖项中A的版本来引用项目B中的快照版本。发布版本时,请记住始终删除快照依赖项。