【问题标题】:build multiple projects and clean multiple projects in a single build file with ANT使用 ANT 在单个构建文件中构建多个项目并清理多个项目
【发布时间】:2012-03-22 05:33:36
【问题描述】:

我有一个疑问,我制作这个构建文件是为了构建 3 个不同的项目

<?xml version="1.0" encoding="UTF-8"?>
<project name="Trinity" basedir="." default="buildall">

   <target name="project1">
        <ant dir="C:/work/project1"/>
   </target>

   <target name="project2" depends="project1">
        <ant dir="C:/work/project2"/>
   </target>

   <target name="project3" depends="project1, project2">
        <ant dir="C:/work/project3"/>
   </target>

   <target name="buildall" depends="project3"/>

</project>

这正在工作。但我也想在构建之前清理项目。

其实我想完成这个: C:/work/project1 蚂蚁清理构建 C:/work/project2 蚂蚁清理构建 C:/work/project3 蚂蚁清理构建

提前致谢。

更新:感谢 Alex 的快速响应,我使用以下内容创建了一个新的 build.xml 文件。而且我相信效果很好,你觉得呢?

<?xml version="1.0" encoding="UTF-8"?>
<project name="Trinity" basedir="." default="buildall">

   <target name="project1">
        <ant dir="C:/work/project1" target="clean"/>
        <ant dir="C:/work/project1" target="build"/>
   </target>

   <target name="project2" depends="project1">
        <ant dir="C:/work/project2" target="clean"/>
        <ant dir="C:/work/project2" target="build"/>
   </target>

   <target name="project3" depends="project1, project2">
        <ant dir="C:/work/project3" target="clean"/>
        <ant dir="C:/work/project3" target="build"/>
   </target>

   <target name="buildall" depends="project3"/>

</project>

谢谢。

【问题讨论】:

  • 停下!你真的有三个项目吗?如果是这样,那么使用Ivy 将它们作为单独的项目进行管理并放弃您的父构建文件。如果没有,那么您的一个项目的三个部分只有一个构建文件 (build-doctor.com/2008/03/19/…)

标签: ant build projects code-cleanup


【解决方案1】:

根据ant task,可以指定外部ant构建文件的目标

<ant dir="C:/work/project1" target="clean build">

编辑:

根据ant文档:

您可以使用嵌套元素而不是使用 target 属性来指定多个目标。这些将按照指定的顺序执行,就像使用单个目标调用 Ant 一样,该目标的依赖关系是指定的目标。

所以你可以这样列出多个目标:

<ant dir="C:/work/project1">
    <target name="clean" />
    <target name="build" />
</ant>

或者,您可以在 Project1、2、3 build.xml 文件中定义一个名为 cleanBuild 的新目标,如果您想将其保留为单个 xml 元素 @ 987654328@

【讨论】:

  • hmm.. 我试过了,但不准确。该命令“干净构建”似乎对我不起作用。
  • 在 3 个 build.xml 文件中是否有 cleanbuild 定义的目标?
  • 是的。如果我确实像我在更新我的问题时所说的那样,那么就可以了。你知道更好的方法吗?
  • 您应该有一个单独的清洁目标。这将允许 clean 仅在需要时被调用。否则,干净的构建将导致代码构建测试周期变慢。 build-doctor.com/2008/07/23/ant-best-practices-the-clean-test
  • 从问题的第一版开始:In fact I want to acomplish this: C:/work/project1 ant clean build C:/work/project2 ant clean build C:/work/project3 ant clean build。关于干净构建的正确性,虽然我同意重复(或频繁)干净构建是一种不好的做法,但我认为关于干净构建的问题不应该自动包括仅使用增量构建的更正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2011-03-23
  • 1970-01-01
  • 2021-05-31
相关资源
最近更新 更多