1

在最近与我们的 ant 脚本杂耍之后,我开始怀疑是否有更好的东西是可能的。

我需要一个知道为我重新编译所有必需的 .java 文件的构建器。

例如。对于这个结构

public class A { ]
public class B extends A {}
public class C {
    B b;
}
  1. For: Compile('C') 会知道编译 A、B、C。
  2. 对于: B 更改,Compile('C') 将只知道重新编译 B。

我知道几种替代方案,Ivy似乎是 ant 的扩展,它是我们当前的 Java 构建器。我们目前用于构建 C++ 代码的 Scons, scons在为 C 代码执行上述行为方面非常出色。然后有Maven几乎但不完全存在的报告。

你有什么建议?您使用什么工具来构建系统?

谢谢你,马克西姆。

4

4 回答 4

1

如前所述,ivy、scons 或 maven 都不会帮助您解决问题。

  1. “for Compile('C')”是什么意思?我认为这不是您的 ant 文件中的内容。
  2. 对于这种情况,Ant 应该按需要工作:您已经描述了它的默认行为。在同一个 javac 元素中,Ant 只会重新编译更改的类。请参阅 javac 任务的Ant 手册条目,尤其是“includeDestClasses”属性。

您可能应该发布一个您发现不足的示例 ant 文件。

于 2009-07-13T00:47:49.650 回答
1
  1. Ant,“依赖”任务和“关闭”选项打开
  2. 'make',来自 IDEA ide
于 2010-12-13T07:47:25.133 回答
0

maven,适用于我的个人和商业产品

于 2009-06-02T08:43:26.113 回答
0

在您的问题中,您描述了类间依赖关系。大多数构建系统,尤其是 Maven,更多地针对项目间的依赖关系。我相信大多数系统只是重新编译项目中的所有类,这些构建系统的大部分好处在于构建尽可能少的项目。

Maven 和 Ivy 都允许您轻松指定项目的外部和内部依赖项,包括您依赖的项目版本。如果它们尚未在本地缓存,它们还将自动将外部库(例如 apache commons)下载到本地计算机作为构建过程的一部分,从而节省大量手动下载和组织第三方 jar 文件的工作。

常春藤是蚂蚁的延伸,就像你提到的那样。我推荐马文。这是一个面向约定的构建系统,我已经成功使用并且感觉非常成熟。Maven 开始使用所需的前期工作量要少得多,而且可扩展性强。

于 2009-06-02T08:51:33.040 回答