4

Force.com 移行ツールを使い始めました。ANTビルドファイルから使いたいです。私はこれを作成しました:

<project name="Subversion to Org" default="deploy" basedir="." xmlns:sf="antlib:com.salesforce">
    <target name="deploy">
        <echo message="deploying from metadata" />
        <echo message="ANT_HOME=${ant.home}"/>
        <echo message="BASEDIR=${basedir}"/>
        <echo message="ANT_CORE_LIB=${ant.core.lib}"/>
        <echo message="JAVA_VERSION=${ant.java.version}"/>
        <echo message="ANT_LIBRARY_DIR=${ant.library.dir}"/>
        <echo message="classpath=${java.class.path}"/>
        <sf:deploy username="${properties.username}"
                        password="${properties.password}"
                        serverurl="${properties.url}"
                        deployroot="${properties.root}"
                        singlePackage="${properties.singlePackage}"
                        runAllTests="${properties.allTest}" />
        </target>
</project>

ant.lib フォルダーに ant-salesforce.jar をコピーしました。このファイルを ANT で実行すると、次のようになります。

     Buildfile: build.xml

deploy:
     [echo] deploying from metadata
     [echo] ANT_HOME=/usr/share/ant
     [echo] BASEDIR=/usr/share/tomcat6/.jenkins/jobs/Salesforce Deploy Test/workspace/deploy script
     [echo] ANT_CORE_LIB=/usr/share/java/ant-1.7.1.jar
     [echo] JAVA_VERSION=1.6
     [echo] ANT_LIBRARY_DIR=/usr/share/ant/lib
     [echo] classpath=/usr/share/java/ant.jar:/usr/share/java/ant-launcher.jar:/usr/share/java/jaxp_parser_impl.jar:/usr/share/java/xml-commons-apis.jar:/usr/lib/jvm/java/lib/tools.jar:/usr/share/ant/lib/ant.jar:/usr/share/ant/lib/ant-launcher.jar:/usr/share/ant/lib/ant-salesforce.jar:/usr/share/ant/lib/ant-bootstrap.jar

BUILD FAILED
/usr/share/tomcat6/.jenkins/jobs/Salesforce Deploy Test/workspace/deploy script/build.xml:16: Problem: failed to create task or type antlib:com.salesforce:deploy
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
No types or tasks have been defined in this namespace yet

This appears to be an antlib declaration.
Action: Check that the implementing library exists in one of:
        -/usr/share/ant/lib
        -/root/.ant/lib
        -a directory added on the command line with the -lib argument


Total time: 0 seconds

ant-salesforce.jar ファイルが見つからないようですが、出力には表示されます。何か案は?

より詳しい情報:

権限チェック

ls -al /usr/share/ant/lib
total 3412
drwxr-xr-x. 2 root root    4096 feb 12 15:36 .
drwxr-xr-x. 4 root root    4096 feb 12 09:49 ..
lrwxrwxrwx. 1 root root      28 feb 12 09:49 ant-bootstrap.jar -> ../../java/ant-bootstrap.jar
lrwxrwxrwx. 1 root root      18 feb 12 09:49 ant.jar -> ../../java/ant.jar
lrwxrwxrwx. 1 root root      27 feb 12 09:49 ant-launcher.jar -> ../../java/ant-launcher.jar
-rwxrwxrwx. 1 root root 3483648 feb 12 12:58 ant-salesforce.jar

瓶の内容物チェック:

...
com/salesforce/ant/BulkRetrieveTask.class
com/salesforce/ant/CompileAndTest$CodeNameElement.class
com/salesforce/ant/CompileAndTest$RunTestsElement.class
com/salesforce/ant/CompileAndTest.class
com/salesforce/ant/Configuration.class
com/salesforce/ant/ConnectionFactory.class
com/salesforce/ant/DeployTask$CodeNameElement.class
com/salesforce/ant/DeployTask.class
com/salesforce/ant/DescribeMetadataTask.class
com/salesforce/ant/ListMetadataTask.class
com/salesforce/ant/RetrieveTask$PackageManifestParser.class
com/salesforce/ant/RetrieveTask.class
com/salesforce/ant/SFDCAntTask.class
com/salesforce/ant/SFDCMDAPIAntTask.class
com/salesforce/ant/SFDCMDAPIAntTaskRunner.class
com/salesforce/ant/ZipUtil.class
com/salesforce/antlib.xml
...

antlib ファイルの内容 (予想どおり):

<antlib>
    <typedef name="compileAndTest" classname="com.salesforce.ant.CompileAndTest"/>
    <typedef name="deploy" classname="com.salesforce.ant.DeployTask"/>
    <typedef name="retrieve" classname="com.salesforce.ant.RetrieveTask"/>
    <typedef name="bulkRetrieve" classname="com.salesforce.ant.BulkRetrieveTask"/>
    <typedef name="listMetadata" classname="com.salesforce.ant.ListMetadataTask"/>
    <typedef name="describeMetadata" classname="com.salesforce.ant.DescribeMetadataTask"/>
</antlib>

前もって感謝します。

4

3 に答える 3

1

sf:deploy の構文は適切です。私と一致します。

プロジェクト定義を確認してください。xmlns:sf の名前空間を正しい値に設定していますか?

次のようにする必要があります。

<project name="salesforce" default="deploy" basedir="." xmlns:sf="antlib:com.salesforce">

ant-salesforce.jar の権限を確認することもできます。

そして、jarが破損していないことを確認します

jar -tf ant-salesforce.jar

于 2013-02-13T01:28:44.563 に答える
0

同じ問題が発生し、権限を ant-salesforce.jar ライブラリに変更して修正しました。

この問題が発生した場合は、ライブラリの権限の問題ではないかどうかを確認する価値があります。

于 2014-05-07T14:17:45.073 に答える
0

解決済み: ant を再インストールしたところ、すべて正常に動作するようになりました。奇妙なこと。

ご支援いただきありがとうございます

于 2013-02-13T09:13:27.453 に答える