繁体   English   中英

用Build.java替换build.xml - 使用Java和Ant库作为构建系统

[英]Replacing build.xml with Build.java - using Java and the Ant libraries as a build system

我对基于Groovy的Ant替代品感到失望。 AntBuilder不能在Eclipse中运行,Eclipse的Groovy插件令人失望,而Gradle还没有准备好。

Ant文档有一个标题为“在Ant之外使用Ant任务”的部分,它提供了如何使用Java代码中的Ant库的预告片。 这里有另一个例子:

http://www.mail-archive.com/dev@ant.apache.org/msg16310.html

从理论上讲,用Build.java替换build.xml似乎很简单。 Ant文档暗示了一些我将不得不发现的未记录的依赖项(从Java中使用Ant的角度来看未记录)。

鉴于Ant脚本令人失望的程度,我想知道为什么以前没有这样做过。 也许它已经并且不是一个好的构建系统。

有没有人尝试使用Ant库在Java中编写构建文件?

我们的构建系统主要基于您描述的内容,并且确实非常有效。 我们使用自定义java程序中的Ant任务(尤其是文件操作任务),这些程序使用基于约定的应用程序模块布局的自动发现来组装应用程序。

可能需要一些胶水Ant XML来做一些事情,比如自己编译构建脚本,并实际调用java来执行构建,但它很小。

java不仅比Ant更具可读性,特别是在涉及条件执行时,它的速度要快得多。 我们基于Ant的构建过去需要一分钟左右才能组装EAR,现在基于java的版本大约需要5秒钟。

鉴于编译Java,这是一个鸡和蛋的问题。 您需要构建Build.java来构建项目。

Ant目前支持使用BeanShell,Groovy和其他一些内联脚本,这可以真正帮助减少对此的需求。

编辑:为了回应Dean的多个评论,如果你的构建完全由一个很长的过程组成,那么你确实不需要ant的构建脚本。 但是,构建脚本的强大之处在于它确保依赖关系只执行一次,同时允许多个入口点,如果你自己滚动,那么这一点远非微不足道。

如果您不喜欢XML格式,那么您并不孤单,ANT的作者也同意您的看法。 但是,如果您的构建过程视图可以从IDE作为其唯一的启动点启动,我会说您的构建需求非常简单。

EDIT2:我赞成了skaffman的回答,因为它直接说明了这个问题。 在评论中,我们似乎同意这种方法适用于程序构建,但不适用于声明性方法,并且您至少需要一些ANT xml才能使用Build.java滚动以避免鸡和鸡蛋问题。 这似乎解决了问题的关键。

你有个好主意。 Cliff Click也有类似的想法: http//blogs.azulsystems.com/cliff/2008/01/i-hate-makefile.html

如果你经历它,我建议你尽可能简单,这样你的构建系统本身就不需要[非平凡]构建系统。

一个重要的观点似乎在这里丢失了。

Ant是用Java编写的,我正在寻找的是使用Ant任务(Ant库中的API)比通过xml更好的方法。 对于我的生活,我无法看到使用xml调用Java比使用Java调用Java更好或更容易。

一个障碍是xml方法被记录,而Java方法没有记录,因此我将不得不下载并熟悉Ant代码。

我在发布这个问题的几个星期后一直拒绝,因为我确信之前有人这样做了,我的google-foo只需要改进。 使用Java调用Ant API而不是xml似乎是显而易见的,我仍然感到惊讶的是,没有为Ant和xml方法开发基于Java的并行方法。

仅仅因为它显而易见并不意味着某人之前已经做过了。

虽然我认为它可能,但你可能会更好地使用shell脚本然后在java程序上编写一个完整的程序来简化自动化构建。

你可能会错过ant的一个关键用途,即易于指定的文件集和易于阅读的属性。

我坚持使用ant,因为Groovy太过接近编写整个应用程序来构建你的真实应用程序了。 太麻烦了。

虽然在Java程序中使用Ant任务相当容易,但如果我是你,我可能会坚持使用Ant构建文件。 如果您正在进行一些常规开发,如果Eclipse不能满足您的需求,那么您可能需要查看其他地方(IntelliJ,NetBeans等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM