如何包括蚂蚁flaka罐



我正在编写ant脚本,并使用ant flaka jar做一些工作。

但是flaka不能作为其他外部Ant库。

例如,如果我需要包含ant-contrib:

  <taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
        <pathelement location="../../lib/ant-contrib.jar"/>
  </classpath>
  </taskdef>

最重要的是,我可以指定jar的位置。

但是对于flaka,我没有看到这样的事情。在官方网站,他们只是告诉用户下载flaka jar到Ant安装文件夹。

当我想使用flaka jar时,我如何指定它在哪里?

首先是一些一般性的建议。任何外部库必须在ant的视线范围内,意味着在路径上。
最原始的方法是将ant插件放在$ANT_HOME/lib中,但这会"污染"您的ant安装。
把你的外部库放在它自己的位置,例如/ant_xtralibs,并通过Ant_ARGS使用-lib参数。Flaka手册第2节对此有一些说明,更多细节请参见Ant手册。

你的例子处理antcontrib使用传统的方法通过taskdef resource..现代推荐的方法是使用XML命名空间声明,正如Flaka手册在第2节之前提到的
:
"因此,所有显示的构建文件片段都假设构建文件包含以下XML名称空间声明"

也可以通过taskdef以传统的方式使用Flaka:

<project>
  <taskdef resource="it/haefelinger/flaka/antlib.xml">
   <classpath>
    <pathelement location="/home/rosebud/flaka/ant-flaka-1.02.02.jar"/>
   </classpath>
  </taskdef>
  <!-- when on path via -lib or ANT_ARGS it's enough to use : -->
  <taskdef resource="it/haefelinger/flaka/antlib.xml"/>
  <logo>
   Hello, #{property['ant.file'].tofile.name}
  </logo>
</project>

输出
Trying to override old definition of datatype filterset
Trying to override old definition of task fail
Trying to override old definition of task echo
[logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[logo] :                               Hello, demo.xml                                :
[logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

注意以"Trying to override.."开头的行。这是因为Flaka扩展了一些ant任务

但是如果你把Flaka放到它自己的命名空间中:

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">
 <fl:logo>
  Hello, #{property['ant.file'].tofile.name}
 </fl:logo>
</project>

输出
[fl:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[fl:logo] :                               Hello, demo.xml                                :
[fl:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

不再"试图重写…"意味着不再与ant自己的任务发生冲突,因为Flaka驻留在它自己的命名空间

简短点:
1)使用ANT_ARGS带来你的外挂(Flaka…等等)在游戏中
2)使用现代的命名空间声明方式

EDIT在请求命名空间与类路径合并的注释后EDIT

可以,请参阅Ant手册了解有关antlib的详细信息,特别是
部分"从构建文件内部加载antlib",对于Flaka,您将使用如下内容:

<project xmlns:fl="antlib:it.haefelinger.flaka">
 <taskdef uri="antlib:it.haefelinger.flaka"
  resource="it/haefelinger/flaka/antlib.xml"
  classpath="path/to/flaka.jar"/>

但是我相信你仍然没有得到使用$ANT_ARGS的好处
只需使用一些脚本来启动您的ant脚本,例如:

为Windows
设置JAVA_HOME = C: java jdk 1.6.0_26
设置ANT_HOME = C: ant
set ANT_ARGS=-lib C:ant_xtralibs;C:ant_testlib
设置路径= % %路径;% JAVA_HOME % bin; % ANT_HOME % bin; C: cvsnt


::默认调用ant -f %1


::调试::调用ant -debug -f %1
…等。

用于Linux/Unix -不要忘记ANT_ARGS行上的引号!

…ANT_ARGS = "自由/usr/local/ant_xtralibs:/usr/地方/ant_testlibs"
出口ANT_ARGS

你不需要再用taskdef了!!
使用-lib选项加载其他库还有另一个好处。
有一些库必须在Ant之前加载(例如BSF, js, xml)
开始解析构建文件。

ANT_ARGS是一个特殊的环境变量。它的内容是自动的

—其他可能性—


1)把那些"设置ANT_ARGS……"' stuff into =

Linux/Unix
美元ANT_HOME/bin/ant


窗口% ANT_HOME %/bin/ant.bat

缺点=更改ant核心安装,记住
在将ant安装复制到
之前的更改又有机器和怪事发生了!


2)把你的插件放到${user.home}/.ant/lib
优点=每个用户都可以使用自己的库

查阅Ant手册了解详细信息:
http://ant.apache.org/manual/running.html命令行
http://ant.apache.org/manual/running.html填词

我刚刚在1分钟内安装了flaka。只需将。jar放入…Ant/lib目录,如安装说明中所示。

运行命令:

<project xmlns:c="antlib:it.haefelinger.flaka">
 <c:logo>
  Hello, #{property['ant.file'].tofile.name}
 </c:logo>
</project>

就像他们在网站上说的。如果输出与以下不同:

Buildfile: C:UsersStefanosDocumentsVisual Studio 2010ProjectsstackOverflowstackOverflowbuild.xml
[c:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[c:logo] :                               Hello, build.xml                               :
[c:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

检查java版本。它必须>= 1.5。您的ant应该>= 1.7,最后但并非最不重要的检查您的权限。

相关内容

  • 没有找到相关文章

最新更新