问题
我正试图在linux上使用Force.com迁移工具(一个自定义的蚂蚁库),但我一辈子都不知道如何让蚂蚁看到这个库。我做错了什么?
错误信息
BUILD FAILED
/home/ec2-user/ant/ucp/build.xml:48: Problem: failed to create
task or type antlib:com.salesforce:retrieve
Cause: The name is undefined.
背景我使用yum install ant
安装ant,然后我将Force.com迁移工具(ant-salesforce.jar)放入/usr/share/ant/lib
。当我运行ant -diagnostics
时,我能够看到这个库,但是该库的任务都没有(应该看到部署,检索等)。我已经上传了ant -diagnostics
的完整输出的要点。
-------------------------------------------
ANT_HOME/lib jar listing
-------------------------------------------
ant.home: /usr/share/ant
ant-bootstrap.jar (19837 bytes)
ant-salesforce.jar (3293054 bytes)
ant.jar (1942059 bytes)
ant-launcher.jar (18418 bytes)
经过大量的谷歌搜索和手动阅读,我尝试了以下内容,但无济于事(注意:上述诊断没有任何以下更改)。我知道我错过了一些明显的东西:(
- 设置$ANT_HOME
- 修改权限
chmod +x /usr/share/ant/lib/salesforce-jar
- 摆弄群组
chown root:root /usr/share/ant/lib/salesforce-jar
- 使用-lib
ant -lib /usr/share/ant/lib/salesforce-jar retrieve ...
传入类 - 通过-lib
ant -lib /usr/share/ant/lib retrieve ...
传入lib文件夹 $ANT_HOME添加到$PATH
export ANT_HOME=/usr/share/ant
export PATH=$PATH:$ANT_HOME/bin
如何保持ant-salesforce.jar
在/home/ec2-user/ant/ucp
下,然后改变taskdef
元素看起来像这样:
<taskdef resource="com/salesforce/antlib.xml" classpath="ant-salesforce.jar" />
再次运行构建,看看情况是否有所好转。将JAR放在与build.xml
相同的文件夹中可以帮助您消除权限问题。
根据@smooth_reggae的回答,可以在将ant-salesforce.jar保存在默认ant lib目录下的情况下使事情正常工作。看起来这应该已经发生了,但是,哦,好吧。
<taskdef resource="com/salesforce/antlib.xml"
classPath="${ant.library.dir}/ant-salesforce.jar"
uri="antlib:com.salesforce"/>