Ant:如何使用Ant设置环境变量

时间:2012-05-29 11:54:55

标签: ant

我在一个名为release.com的文件中有环境变量,如下所示,

echo "<<< OpenSplice HDE Release V5.5.1OSS For x86.linux2.6, Date 2012-05-23 >>>"
if [ "$SPLICE_ORB" = "" ]
then
    SPLICE_ORB=DDS_OpenFusion_1_6_1
    export SPLICE_ORB
fi
if [ "$SPLICE_JDK" = "" ]
then
    SPLICE_JDK=jdk
    export SPLICE_JDK
fi
OSPL_HOME="/usr/local/covidien/HDE/x86.linux2.6"
OSPL_TARGET=x86.linux2.6
PATH=$OSPL_HOME/bin:$PATH
LD_LIBRARY_PATH=$OSPL_HOME/lib:$LD_LIBRARY_PATH
CPATH=$OSPL_HOME/include:$OSPL_HOME/include/sys:$CPATH
OSPL_TMPL_PATH=$OSPL_HOME/etc/idlpp
OSPL_URI=file://$OSPL_HOME/etc/config/ospl.xml
. $OSPL_HOME/etc/java/defs.$SPLICE_JDK
CLASSPATH=$OSPL_HOME/jar/dcpssaj.jar:$CLASSPATH
CLASSPATH=$OSPL_HOME/jar/dcpscj.jar:$CLASSPATH
export CLASSPATH OSPL_HOME OSPL_TARGET PATH LD_LIBRARY_PATH CPATH OSPL_TMPL_PATH OSPL_URI
$@

我会在Linux中使用这个环境变量,

# source release.com

使用 Ant脚本如何将release.com设置为源?

2 个答案:

答案 0 :(得分:2)

构建设置通常在Ant构建中定义为properties

如有必要,可以按如下方式访问环境设置:

  <property environment="env"/>
  <echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
  <echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>

我会谨慎使用此功能,因为它会使您的构建设置更加复杂且便携性更低(Windows管理环境设置与Linux相比有所不同)。

最后,如果您尝试将构建的依赖项集中在外部文件中,遗憾的是ANT(跨平台和Java)将不支持shell脚本。相反,您可以使用Java属性文件并将其导入到构建中,如下所示:

<property file="build.properties"/>

Java属性具有易于理解的格式:

src.dir=src
build.dir=build

答案 1 :(得分:0)

为了添加Mark的答案,Ant XML构建文件也可用于将依赖项集中在外部文件中。

<强> dependencies.xml

<project name="deps" basedir=".">  
  <dirname property="deps.basedir" file="${ant.file.deps}"/>

  <property name="my.jar" location="${deps.basedir}/my-tasks.jar" />

  <taskdef name="my-ant-task" classpath="${my.jar}"
      classname="org.my.domain.ant.MyAmazingTask" />
</project>


的build.xml

<project name="my-project" basedir=".">
  <import file="dependencies.xml" />

  <target name="give-my-task-a-spin">
    <my-ant-task />
  </target>
</project>



如果您有大量自定义任务,最好将它们放在antlib中,这可以通过为库中的所有任务共享相同的类加载器来减少内存使用量。

<antlib>
  <taskdef name="my-task01"
      classname="org.my.domain.ant.MyCustomTask01" />

  <taskdef name="my-task02"
      classname="org.my.domain.ant.MyCustomTask02" />

  <taskdef name="my-task03"
      classname="org.my.domain.ant.MyCustomTask03" />

  ...

</antlib>