gpt4 book ai didi

Java Flat 多项目,具有快速增量编译和热代码部署 - WTP? eclipse ?主意?马文? Gradle ?

转载 作者:太空宇宙 更新时间:2023-11-04 14:44:49 26 4
gpt4 key购买 nike

我们目前拥有相当大的相互依赖的多项目代码库,使用 Java7 和 Groovy,通过运行 Tomcat 7 的 Eclipse/WTP 和 Ant 构建。基本上,您可能会在大多数 Java 企业软件开发中找到这些代码。多年来我们已经调整了我们的构建过程,但它在 Eclipse 中相当脆弱,仅 Ant 的构建工作完美,尽管速度很慢:

  • 工作区
    • jar
    • 常见
    • common-web(取决于来源)
    • web1(取决于 common-web、common)
    • web2(取决于 common-web、common)
    • web3(取决于 common-web、common)
    • cli-app1(取决于通用)
    • cli-app2(取决于通用)

我们过去专门使用 Ant 进行构建,创建 common.jar、common-web.jar 等并复制到 webN/WebContent/WEB-INF/lib 中。这有效,但速度很慢,并且使得热代码替换和增量编译不可能(至少对于公共(public)*中的更改)。

现在,我们让 Eclipse/WTP 编译和组装静态资源。 Common 和 common-web 项目作为虚拟 jar 添加到 Deployment Assembly 中,以节省创建 jar 的时间。 Ant 仍然对动态资源进行一些模板化和复制,以及将所有外部 jar 复制到 WEB-INF/lib 中(与 Eclipse/Web App Libraries 相比,这是由 Ant 完成的,因此我们只需将 jar 列表维护在一个地方、 build.xml,而不是除了用于生产构建的 build.xml 之外还必须为 Eclipse 中的每个项目单独维护它们)。 Ant 完成后,它会自动刷新 WEB-INF/lib 和 WEB-INF/classes 文件夹,以便 Eclipse/WTP 知道更新的文件。

对于服务器上的生产部署,我们只需让 Ant 处理编译和组装。

我们的策略是让 Eclipse/WTP 处理自动增量构建并发布到 Tomcat 进行开发,已将 2 分钟以上的纯 Ant 编译时间缩短到几乎瞬时,并允许热代码替换常见*类。然而,这种设置非常脆弱,因为在 Eclipse 不知情的情况下文件系统上的任何文件更改都会破坏构建。这也意味着我们的项目设置很复杂,因此需要 checkin ,这当然意味着它会经常中断,因为同事不小心 checkin 了本地更改。

必须有一种更好的方法来使扁平多模块项目在 IDE 中无缝工作

我研究过 maven 和 gradle,但都承认,当涉及到平面多模块设置时,它们根本不起作用(或者确实如此?)。由于多个顶级项目需要相同的子模块,因此不可能嵌套。是的,您可以将根 pom.xml 或 gradle.settings 放在项目上方的文件夹中,但这不允许 Intellij 或 Eclipse 进行无缝构建/依赖项管理,因为此文件夹不可见。

不幸的是,我遇到的所有教程和示例都涉及爱好项目大小设置。从来没有一个真正的企业示例有多个ear/war和共享项目。

我们很乐意更改构建工具甚至 IDE,如果有一个工具链可以真正处理无缝编译和组装,而无需离开 IDE,而且速度很快。

基本上,我们追求的是“简单”:

  • 自动依赖关系管理
  • 开发过程中快速、增量编译
  • 热代码替换(WTP/JRebel 风格)

那么,你能帮忙吗?

最佳答案

在 gradle 中,每个模块中可以有不同的 settings.gradle,例如:在 web1 中,添加具有以下内容的 settings.gradle:

include ':common'
project(':common').projectDir = "../common" as File
include ':common-web'
project(':common-web').projectDir = "../common-web" as File

然后你可以在 build.gradle 中添加依赖项,如下所示:

 compile project(':common')
compile project(':common-web')

gradle 可以帮助你做到:

  • 自动依赖关系管理
  • 开发过程中增量编译,但根据我的经验,它比 ant 慢得多
  • gradle有Jrebel插件,可以帮助Hot-Code替换。

与 Maven 相比,Gradle 非常灵活且易于管理,但与 Maven 相比,它速度较慢且错误更多,因为它更年轻。

关于Java Flat 多项目,具有快速增量编译和热代码部署 - WTP? eclipse ?主意?马文? Gradle ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com