Ant:是否可以创建动态ant脚本?

时间:2016-06-23 18:11:53

标签: ant

因此,在工作中,我经常需要创建几乎相同的ant脚本。基本上,我们为客户提供的应用程序旨在易于扩展,我们提供为其设计和创建自定义模块的服务。由于我们的应用程序的复杂性,有很多交叉依赖,我倾向于在我们的核心开发环境中开发模块,使用IntelliJ编译它,然后运行一个执行以下任务的基本ant脚本:

1)清理构建目录

2)根据包路径创建构建目录和目录层次结构。

3)将类文件(和源文件)复制到单独的源目录。

4)把它包起来。

问题是,要做到这一点,我需要逐行浏览脚本并更改一堆属性名称,因此它适用于新的用例。我还保存所有脚本,以防我需要回到它们。

这不是世界上最糟糕的事情,但我一直在寻找更好的办法。因此我的想法是:

对于每个特定的实现,我将提供仅属性的ant脚本(或其他文件)。键值对,根据其用途,为每个键提供特定的前缀。然后我希望我的ant脚本运行各种任务,为适当的键值对执行每个任务。

例如,复制类文件。我会有一个名为“classFile.filePath”的属性。我希望脚本为它检测到的每个以“classFile ...”开头的属性调用任务。

老实说,从我目前的研究到目前为止,我并不相信这是可能的。但是......我非常顽固,总是在寻找新的创意选择。那么,我有什么选择?或者没有?

1 个答案:

答案 0 :(得分:2)

可以动态生成ANT脚本,例如以下使用XML输入文件执行此操作:

我个人总是试图避免这种复杂程度。 Ant不是一种编程语言。

看看你想要实现的目标看起来确实可以将依赖项打包为jar并使用像Nexus或Artifactory这样的Maven存储库管理器进行存储。这将简化每个子项目的构建。在构建依赖于这些已发布库的项目时,您可以使用Apache ivy之类的依赖关系管理工具来下载它们。

希望这有助于你的问题相当广泛。