有没有办法在不重新编译整个项目的情况下编译部分java?

时间:2017-07-13 12:30:12

标签: java

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

PS:用C ++编译/链接东西来解决这些问题非常方便。

5 个答案:

答案 0 :(得分:3)

有几种解决方案:

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

很难说哪个是理想的,每个都有自己的优点和缺点。

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

OSGi是一个非常小众的产品,它很可能对你没用,而微服务本身就是一个相当复杂的话题,所以我建议你使用像Gradle这样的工具并使用JRebel或其他一些代码交换工具。开发你的应用程序。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

非常好的解释here

答案 3 :(得分:0)

这很大程度上取决于您使用的构建工具。我对其他构建工具了解不多,但我确信Gradle可以做到这一点。在一个模块化的项目中,例如我正在运行的项目(GWT,J2EE,Tests),我可以通过一个简单的命令轻松地排除我不想编译的部分:

gradle redeploy -x test -x compilegwt

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

答案 4 :(得分:-1)

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

javac directory1/*.java directory2/*.java 

以下是我来自的original question

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

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