【问题标题】:Using maven to rebuild local sources from other projects in dev environment使用 maven 从开发环境中的其他项目重建本地源
【发布时间】:2017-02-15 06:35:41
【问题描述】:

我们有一个微服务架构,整个项目如下:

+- Utilities
+- Service A REST
+- Service A Backend
+- Service B REST
+- Service B Backend
...
+- Service X REST
+- Service X Backend

每一个都是一个独立的Maven项目,可以独立开发。

当然,有些项目可能不得不使用另一个项目中的类(例如,为了能够在错误消息中返回相应的 Exception 类)。

因此其中一个项目可能具有以下依赖项:

Service A backend
+- dependency 1
+- dependency 2
...
\- Utilities
\- Service B backend

在标准部署中,我们将使用 Maven 存储库并简单地将最新的 jars 添加为依赖项。问题出在开发过程中:如果我们对Service B backend 的依赖项Service A backend 进行更改,我们不能简单地做mvn compile Service-A-backend,因为Service B backend 不会被重新编译。在开发过程中对每个项目都这样做非常容易出错。

Eclipse 可以通过将项目放在构建路径上来解决这个问题,但我们不想将自己绑定到 IDE,并且希望能够通过 Maven 本身解决问题。

你能在上面的场景中使用 Maven,这样你就可以将上面的 Service B backend 列为 source 依赖项,如果我们 compilepackage Service A backend,它的本地源依赖项也会被重新编译有什么变化吗?如果没有,你能用gradleant 做吗?

【问题讨论】:

    标签: java maven ant build


    【解决方案1】:

    您应该考虑查看 Maven modules 功能。以下是在 POM 文件中使用的示例:

    <modules>
        <module>A</module>
        ....
    </modules>
    

    我个人除了使用 maven 模块(用于编译)之外,还使用 ​​git sub-module 用于基于多个项目功能的拉/推代码。

    【讨论】:

    • 感谢您的意见。然而,我的印象是,要使用modules 功能,每个底层服务都需要有一个父 pom。我们还使用了 Spring Boot,它已经有一个父 pom,因此我们需要为每个服务提供多个父级,这似乎非常不切实际。
    • 你可以创建一个父 pom,它本身有一个 spring boot 父级
    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2019-10-20
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多