我想在ant中使用FTP任务,我找到了相应的jar文件,并且一切正常.我已将jar文件放在"libs"目录中,并与构建中使用的其他文件一起放置.唯一的问题是用户必须运行"ant -lib commons-net-ftp-2.0.jar"才能进行构建; 我真的更喜欢可以只运行没有参数的"ant".
阅读ant可选任务的安装页面,我看到有五种方法可以在ant中加载额外的库,而且它们都不是我正在寻找的.我不想强迫用户对他们的系统进行任何修改来运行这个任务; 应该可以从我们产品的源文件夹中的"libs"目录加载它.这意味着设置全局CLASSPATH也是不对的(反正这是一个坏主意).
如文档中所述,最后一个选项是首选方法...从构建脚本本身单独加载jar文件.我在过去使用ant-contrib任务和JUnit做了这个,并且想在这里做,但我不知道如何实现这一点.FTP任务不支持嵌套的classpath元素,我不知道通过taskdef加载这个库需要的XML资源.如何从ant中加载库?
编辑:回答到目前为止在这里发布的答案和问题,我正在使用ant 1.7.1.制作ftp taskdef肯定不起作用; 抛出以下错误:
BUILD FAILED /my/path/build.xml:13:taskdef class org.apache.tools.ant.taskdefs.optional.net.FTP找不到
也许这是因为classname是错误的.如果我只有一个jar文件,我究竟如何找到我应该使用的类名?它没有记录在任何地方,我在罐子里找不到任何类似于那条道路的东西.
java.library.path属性似乎是只读的.例如,当您在以下构建文件上运行ant时
<project name="MyProject" default="showprops" basedir=".">
<property name="java.library.path" value="test"/>
<property name="some.other.property" value="test1"/>
<target name="showprops">
<echo>java.library.path=${java.library.path}</echo>
<echo>some.other.property=${some.other.property}</echo>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
你得到
> ant -version
Apache Ant version 1.6.5 compiled on June 2 2005
> ant -Djava.library.path=commandlinedefinedpath
Buildfile: build.xml
showprops:
[echo] java.library.path=commandlinedefinedpath
[echo] some.other.property=test1
BUILD SUCCESSFUL
Total time: 0 seconds
Run Code Online (Sandbox Code Playgroud)
输出表明java.library.path尚未更改,但 some.other.property已正确设置.
我想知道如何修改构建文件中的java.library.path.在ant命令行上指定java.library.path并不是一个简单的选项,因为当时不知道库路径位置.
注意:我希望这可以工作,以便我可以指定单元测试中使用的本机库的位置.