使用ant构建:动态构建选项?

时间:2008-11-07 21:17:35

标签: java ant build-process

由于多个开发人员在同一个Tomcat应用程序上工作,我想告诉应用程序根据当前用户和版本控制客户端/视图安装到不同的路径。

因此,如果Bob正在构建,应该将应用程序安装在Bob的测试环境中,可能是/ bob1或类似的东西。 Bob可能有多个与他合作的版本控制客户端/视图/工作区,因此他可以拥有/ bob1,/ bob2,/ bob3等。

安装位置在build.properties文件中指定。有没有办法避免检查该文件并为每个特定用户和版本控制视图更改它?

“ant install”可以接受参数还是配置为考虑安装目标的环境变量?

4 个答案:

答案 0 :(得分:5)

我通常使用已经给出的默认属性答案的变体:

<property file="local.properties" />
<property file="default.properties" />

我先读取本地属性文件,然后默认读取一秒。用户不编辑默认值(然后不小心将其签入),他们只是在local.properties中定义要覆盖的属性。

答案 1 :(得分:2)

您可以从命令行覆盖ant属性。

ant -Dinstall.location=/bob1 install

有关详细信息,请参阅Running Ant

答案 2 :(得分:1)

这个答案已经很晚了,但我只想把它放在可能需要它的人身上。答案与你问题的第二部分有关。 “可以”安装“获取参数或配置为考虑安装目标的环境变量吗?”

  1. 在构建文件中定义环境:

    <property environment="env" />
    
  2. 引用env变量并使用它来指示路径。这是在我的构建文件中的classpath定义中完成的。它说包含一个来自weblogic lib目录的名为api.jar的jar。您可以访问任何其他路径,只要为其定义了相关的环境。例如,如果您为它们发送了环境变量,则可以访问Program Files,Documents,Java Home等。这里为weblogic安装目录定义的环境变量是BEA_HOME

    <fileset dir="${env.BEA_HOME}/wlserver_10.0/server/lib">
        <include name="api.jar" />
    </fileset>
    

答案 3 :(得分:0)

在命令行使用-D选项定义属性很好,但如果经常有很多这样的话,它会变得乏味。为了抵制在bash脚本中包装ant调用的冲动,通常的做法是导入属性文件。

在主要构建文件中放置:

<property file="default.properties" />

然后你有一个名为default.properties.sample的文件,带有一个示例配置。这正在检查版本控制。开发人员检查default.properties.sample,将其复制到default.properties并根据需要进行编辑。

你应该为default.samples设置一个忽略默认标志,以防止意外检查它(svn:用subversion忽略)。