7

每次我创建一个新项目时,我都会将上一个项目的 ant 文件复制到新项目并进行适当的更改(同时尝试使其对下一个项目更加灵活)。但是由于我一开始并没有真正考虑过,所以文件开始看起来很丑陋。

您有可以轻松移植到新项目中的 Ant 模板吗?制作一个的任何提示/网站?

谢谢你。

4

7 答案 7

9

制作模板的另一种方法是通过逐步概括当前项目的 Ant 脚本来改进模板,这样下次复制它以用于新项目时所做的更改就会更少。您可以做几件事。

在文件名中使用 ${ant.project.name},因此您只需在项目元素中提及您的应用程序名称。例如,如果您生成 myapp.jar:

<project name="myapp">
   ...
   <target name="jar">
      ...
      <jar jarfile="${ant.project.name}.jar" ...

构建您的源目录结构,以便您可以通过复制整个目录而不是命名单个文件来打包您的构建。例如,如果您要将 JAR 文件复制到 Web 应用程序存档,请执行以下操作:

<copy todir="${war}/WEB-INF/lib" flatten="true">
   <fileset dir="lib" includes="**/*.jar">
</copy>

将属性文件用于特定于机器和特定于项目的构建文件属性。

<!-- Machine-specific property over-rides -->
<property file="/etc/ant/build.properties" />

<!-- Project-specific property over-rides -->
<property file="build.properties" />

<!-- Default property values, used if not specified in properties files -->
<property name="jboss.home" value="/usr/share/jboss" />
...

请注意,Ant 属性一旦设置就无法更改,因此您可以通过在默认值之前定义一个新值来覆盖一个值。

于 2008-08-26T15:48:52.647 回答
6

你可以试试http://import-ant.sourceforge.net/ 。它是一组构建文件片段,可用于创建简单的自定义构建文件。

于 2010-03-03T14:04:55.963 回答
1

如果您正在处理多个具有相似目录结构的项目,并且希望坚持使用 Ant 而不是使用 Maven,请使用Import 任务。它允许您让项目构建文件只导入模板并定义任何变量(类路径、依赖项等),并在导入的模板中关闭所有真正的构建脚本。它甚至允许覆盖模板中的任务,从而允许您放入项目特定的 pre 或 post 目标挂钩。

于 2008-09-09T01:20:56.967 回答
1

我遇到了同样的问题,并概括了我的模板并将它们发展成自己的项目:Antiplate。也许它对你也有用。

于 2008-09-23T16:43:38.620 回答
0

我曾经做过完全相同的事情....然后我切换到maven。Maven 依赖于一个简单的 xml 文件来配置您的构建和一个简单的存储库来管理您的构建的依赖项(而不是使用您的代码将这些依赖项检查到您的源代码控制系统中)。

我真正喜欢的一个功能是对你的 jar 进行版本控制是多么容易——很容易让你的库的旧用户可以使用以前的版本。当您想要升级您使用的库(例如 junit)时,这也对您有利。这些依赖项在您的 Maven 存储库中存储为单独的文件(及其版本信息),因此旧版本的代码始终具有其特定的依赖项可用。

这是一个更好的蚂蚁。

于 2008-08-26T15:13:31.780 回答
0

我曾经做过完全相同的事情....然后我切换到了maven。

哦,是Maven 2。我怕现在有人还在认真地使用Maven。把笑话放在一边:如果您决定切换到 Maven 2,则在查找信息时必须小心,因为 Maven 2 是对 Maven 的完全重新实现,其中一些基本的设计决策发生了变化。不幸的是,他们没有更改名称,这在过去一直是一个很大的混乱来源(鉴于网络的“记忆”性质,有时仍然如此)。

如果您想保持 Ant 精神,您可以做的另一件事是使用Ivy来管理您的依赖项。

于 2008-08-26T17:14:57.993 回答
0

要看的一件事——如果您使用的是 Eclipse,请查看 ant4eclipse 任务。我使用一个单独的构建脚本来询问在 Eclipse 中设置的详细信息(源目录、构建路径,包括依赖项目、构建顺序等)。

这使您可以在一个地方(eclipse)管理依赖项,并且仍然能够使用命令行构建来自动化。

于 2008-09-16T15:32:49.310 回答