首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何包含Ant flaka jar?

如何包含Ant flaka jar?
EN

Stack Overflow用户
提问于 2011-10-07 03:10:03
回答 2查看 1.2K关注 0票数 0

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

但是flaka不像其他外部Ant库那样工作。

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

代码语言:javascript
复制
  <taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
        <pathelement location="../../lib/ant-contrib.jar"/>
  </classpath>
  </taskdef>

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-07 04:12:10

首先,一些一般性的建议。任何外部库都必须在ant的视线内,这意味着在path上。

最原始的方法是将ant插件放在$ ant _HOME/lib中,但这会“污染”您的ant安装。

把你的外部库放在它自己的位置,f.e./ant_xtralibs并通过Ant_ARGS使用-lib参数。

Ant manual中,Flaka manual第2节有一些关于这方面的说明。

处理antcontrib的示例通过taskdef资源使用传统方法。

现代推荐的方法是使用XML名称空间声明,就像Flaka手册提到的那样

就在第2节之前:

“因此,显示的所有生成文件片段都假定生成文件包含以下XML命名空间声明”

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

代码语言:javascript
复制
<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>

输出

代码语言:javascript
复制
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] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

注意以“尝试覆盖..”开头的代码行。这是因为Flaka扩展了一些蚂蚁任务

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

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

输出

代码语言:javascript
复制
[fl:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[fl:logo] :                               Hello, demo.xml                                :
[fl:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

不再“尝试覆盖...”意味着不再与ant自己的任务冲突,因为Flaka驻留在它自己的命名空间中

所以长话短说:

1)使用ANT_ARGS带上额外的插件(Flaka..等)在游戏中

2)使用现代的命名空间声明方式

在请求与类路径组合的命名空间的注释后编辑编辑

是的,可以,请参阅Ant manual for details about antlib,特别是

"Load antlib from the buildfile",对于Flaka,你可以使用如下命令:

代码语言:javascript
复制
<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脚本,f.e.:

适用于Windows

设置JAVA_HOME=C:\java\jdk\1.6.0_26

设置ANT_HOME=C:\ant

设置ANT_ARGS=-lib C:\ant_xtralibs;C:\ant_testlibs

设置PATH=%PATH%;%JAVA_HOME%\bin;%ANT_HOME%\bin;C:\cvsnt

::默认

调用ant -f %1

::调试

::调用ant -debug -f %1

..。等。

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

..。

ANT_ARGS="-lib /usr/local/ant_xtralibs:/usr/local/ant_testlibs“

导出ANT_ARGS

..。

您不再需要在类路径中使用taskdef !!

使用-lib选项加载其他库还有另一个好处。

有一些库必须在Ant之前加载(f.e.BSF、js、xml)

开始解析构建文件。

ANT_ARGS是一个特殊的环境变量。它的内容会自动添加到Ant的调用中。

--其他可能性--

1)

把那些'set ANT_ARGS ...‘填充到=

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#commandline

http://ant.apache.org/manual/running.html#libs

票数 0
EN

Stack Overflow用户

发布于 2011-10-07 03:54:14

我刚在不到1分钟的时间里安装了flaka。只需将.jar放入您的..ant/lib目录,如安装说明所示。

运行以下命令:

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

正如他们在网站上所说的那样。如果输出结果与以下内容不同:

代码语言:javascript
复制
Buildfile: C:\Users\Stefanos\Documents\Visual Studio 2010\Projects\stackOverflow\stackOverflow\build.xml
[c:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[c:logo] :                               Hello, build.xml                               :
[c:logo] ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

检查你的java版本。它必须是>= 1.5。你的ant应该是>= 1.7,最后但同样重要的是检查你的权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7679224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档