【问题标题】:Are there any ways to compile java in parts without recompiling the whole project?有没有办法在不重新编译整个项目的情况下部分编译java?
【发布时间】:2017-07-13 12:30:12
【问题描述】:

我有一个庞大的项目,即使是很小的改动,我也必须重建整个项目。 这是架构错误,还是 java 无法进行这种部分编译?

PS:用它的编译/链接东西来解决C++中的这类问题真的很方便。

【问题讨论】:

  • 考虑使用构建工具,例如 ant 或 maven
  • 还有热插拔之类的。
  • 你可以用javac.exe将修改后的类一一编译,然后用WinRAR打开jar,把.class放进去。无论如何,最好使用构建工具(如 Ant)。
  • 0 反对票 我认为它实际上是构建工具。您使用的是什么构建工具?我可以详细解释一下如何在 gradle 中实现增量编译。您是否有任何机会依赖 IDE?
  • @我们使用 maven 作为我们的构建工具,在我向代码库添加更改后,我必须重新编译/重建整个项目。

标签: java


【解决方案1】:

有几种解决方案:

  • 使用可以单独编译的MavenGradle 多模块项目。此外,它们还提供增量编译。
  • 使用microservices
  • 使用 OSGi 将模块系统添加到 Java 并动态重新加载
  • 使用JRebel,它添加了易于使用的代码交换。

很难说哪个最适合你,每个都有自己的长处和短处。

请注意,如果您使用 Java 编写代码,现在使用 Maven 或 Gradle 是强制。它们不仅可以让你模块化你的项目,而且它们也是依赖管理和构建工具。

OSGi 是一个非常小众的产品,它很可能对您没有用处,而微服务本身就是一个非常复杂的主题,因此我建议您使用 Gradle 之类的工具,并在开发您的应用程序时使用 JRebel 或其他代码交换工具应用程序。

【讨论】:

    【解决方案2】:

    拆分项目并将某些部分用作 maven 工件怎么样?在这种情况下,如果您必须重新编译某个部分,只需增加版本号即可。

    在这种情况下,您需要在本地网络中安装一个存储库。

    【讨论】:

      【解决方案3】:

      首先是禁用 Make,然后从调试/运行配置编译操作,从文件上下文菜单。

      一个很好的解释here

      【讨论】:

        【解决方案4】:

        这在很大程度上取决于您使用的构建工具。我对其他构建工具了解不多,但我确信Gradle 会这样做。在一个模块化项目中,比如我目前正在运行的项目(GWT、J2EE、测试),我很容易通过一个简单的命令排除我不想编译的部分:

        gradle redeploy -x test -x compilegwt
        

        这一行只是说在编译中排除测试和 gwt。干杯

        【讨论】:

          【解决方案5】:

          如果你没有使用 Maven 或 Ant 等构建管理工具,你可以使用 javac 编译指定目录:

          javac directory1/*.java directory2/*.java 
          

          这是我来源的original question

          我对 Ant 进行了简短搜索,所以如果您确实在使用它,请查看 here

          编辑:发现您确实在使用 Maven。我无论如何都不是 Maven 专家,但如果你在模块中编写项目,应该可以编译指定的模块,也可能编译它们的依赖项,对吗?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-02
            • 2019-11-20
            • 2011-05-20
            • 1970-01-01
            • 2010-09-09
            • 2023-03-11
            相关资源
            最近更新 更多