【问题标题】:What is the best approach to sync two java projects?同步两个 java 项目的最佳方法是什么?
【发布时间】:2018-02-16 22:07:24
【问题描述】:

我有两个基于 maven 的 java 项目,项目 A 和项目 B。 项目 A 由一个团队管理,B 由另一个团队管理。项目 A 是一个基础项目,其库和类在项目 B 中使用。 目前,每当项目 A 的团队对其项目进行任何更改时,他们都会向团队 B 发送一个项目 jar,而团队 B 必须用新的 jar 替换旧的 jar。

由于我们的项目是基于 maven 的项目,并作为 git 存储库进行管理,我相信会有更好的方法自动完成,因此每当项目 A 发生变化时,团队 B 不必担心并且最新的更改应自动反映给 B 团队。

【问题讨论】:

  • 那就做吧....(你的问题是什么?)
  • 您正在使用 Maven。所以团队 A 应该发布到本地 Maven 仓库,团队 B 应该依赖于此。不再需要手动复制 jar 文件。
  • 你的问题本身就有答案!你到底想说什么?
  • @dave 我对你的方法有疑问,每当 A 团队发布本地仓库的更新时,你不认为 B 团队必须更新他们的 pom.xml 吗?
  • @NikunjAggarwal 如果版本号发生变化,那么是的。但对于任何依赖库都是如此。从好的方面来说,这意味着您知道自己使用的是哪个版本。

标签: java git maven build publish


【解决方案1】:

鉴于您正在使用 Maven,团队 A 应该将项目 A 发布到存储库(可能是私有的)。 B 团队然后依赖项目 A(通过他们的 POM),其余的将自行处理,即。不再需要手动复制库。

作为奖励,团队 B 始终可以准确指定他们希望依赖的项目 A 的哪个版本。

(设置您自己的私有存储库并不难。Apache 的 Web 服务器可以托管它,或者您可以使用 Nexus 等工具。一些构建工具(例如 gradle)会生成 POM 并将您的库发布到站点以供使用你。)

【讨论】:

  • 您可以通过详细说明“本地存储库”的含义来改进此答案。我假设您说的是“托管存储库”,例如 Nexus 或 Artifactory。
【解决方案2】:

将 A 项目(jar+pom)推送到某个存储库(Nexus)。然后在您的项目 B POM.xml 中添加依赖项,版本为最新。

<distributionManagement> <repository> <id>releases</id> <name>Releases Repository</name> <url> http://localhost:8081/nexus/content/repositories/releases </url> </repository> <snapshotRepository> <id>snapshots</id> <name>Snapshot Repository</name> <url> http://localhost:8081/nexus/content/repositories/snapshots </url> </snapshotRepository> </distributionManagement>

在项目A和B中添加以上内容

<dependency>
<groupId>mygroup</groupId>
<artifactId>C</artifactId></dependency>

在项目 B 中添加上述内容。 在项目 A 中进行新更改时,它会在重建时反映在 B 中。

For more Maven

【讨论】:

    猜你喜欢
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2019-02-14
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多