执行时显示错误的Ant命令:resource axis-tasks.无法找到属性



运行ant时出现问题显示错误无法从资源axis-tasks.properties加载定义。无法找到:

下面是出现问题的build.xml的快照

 <target name="axis" depends="prepare">
      <taskdef resource="axis-tasks.properties"/> 
      <axis-wsdl2java url="${webconsole.base}/src/myservice.wsdl"
            output="${axis.output}">
        <mapping
            namespace="urn:myservice"
            package="com.company.service" />
        <mapping
            namespace="http://webserviceurl.com"
            package="com.company.service" />
      </axis-wsdl2java>
    </target>

运行ant时显示以下错误:

/build.xml:76: Problem: failed to create task or type axis-wsdl2java
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.

环境属性:

export TMPDIR=$HOME/tmp
export RELEASE=$HOME/Release
export JAVA_HOME=/usr/java/current
export ANT_HOME=/usr/local/apache-ant-1.6.5
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH

附加信息

实际上,我们有两台构建机。第一个只有root用户,我们手动创建了/home/user文件夹,例如/home/rajan等。在这台机器中,当我们从/home/rajan/r7_sp1_utf8/vermaraj_R7_SP1/vobs/project/ip_src/AdminWebConsole中运行ant作为root时,ant 工作正常

echo $PATH =/usr/java/current/bin:/usr/local/apache-ant-1.6.5/bin:/usr/lib/q -3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/sbin:/usr/bin:/root/bin

在第二台机器上,我们已经创建了个人用户帐户,当我们尝试从/home/rajan/r7_sp1_utf8/vermaraj_R7_SP1/vobs/project/ip_src/AdminWebConsole运行ant作为root或rajan时,不能正常工作

回声路径:美元/usr/lib/qt - 3.3/bin:/usr/地方/sbin:/usr/地方/bin:/sbin:/bin:/usr/sbin:/usr/bin:/根/bin

同样,在两个构建机器中都回显$CLASSPATH为空

locate axis-ant.jar给出如下输出:

  1. /home/Rajan R7_SP1_UTF8/vermaraj_R7_SP1 vobs/项目/ip_src/AdminWebConsole/lib/axis-ant.jar
  2. /home/Rajan/R7_SP1_UTF8/vermaraj_R7_SP1/vobs/项目/ip_src/AdminWebConsole/输出/战争/web - inf/lib/axis-ant.jar
  3. /usr/地方/apache-ant-1.6.5/lib/axis-ant.jar

ivy不是一个选项,因为它是非常大的代码库的一部分,如果我们添加额外的库,它可能会产生问题。

ANT任务似乎确实有一组复杂的依赖项。我建议添加ivy扩展来管理这些。

<标题> 例子
├── build.xml
├── src
│   └── myservice.wsdl
└── target
    └── output
        └── com
            └── examples
                └── www
                    └── wsdl
                        └── HelloService_wsdl
                            ├── Hello_BindingStub.java
                            ├── Hello_PortType.java
                            ├── Hello_Service.java
                            └── Hello_ServiceLocator.java

build . xml

<project name="demo" default="axis" xmlns:ivy="antlib:org.apache.ivy.ant">
    <!--
    ================
    Build properties
    ================
    -->
    <property name="build.dir"   location="target"/>
    <property name="axis.output" location="${build.dir}/output"/>
    <available classname="org.apache.ivy.Main" property="ivy.installed"/> 
    <!--
    ===========
    Targets
    ===========
    -->
    <target name="install-ivy" description="Install ivy" unless="ivy.installed">
        <mkdir dir="${user.home}/.ant/lib"/>
        <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar"/>
        <fail message="Ivy has been installed. Run the build again"/>
    </target>
    <target name="resolve" depends="install-ivy" description="Use ivy to resolve classpaths">
        <ivy:cachepath pathid="build.path">
            <dependency org="org.apache.axis" name="axis-ant" rev="1.4" />
            <dependency org="org.apache.axis" name="axis" rev="1.4" />
            <dependency org="org.apache.axis" name="axis-jaxrpc" rev="1.4"/>
            <dependency org="commons-logging" name="commons-logging" rev="1.1.1" />
            <dependency org="commons-discovery" name="commons-discovery" rev="0.4" />
            <dependency org="wsdl4j" name="wsdl4j" rev="1.6.2" />
        </ivy:cachepath>
    </target>
    <target name="axis" depends="resolve" description="Run Axis task">
        <taskdef resource="axis-tasks.properties" classpathref="build.path"/> 
        <mkdir dir="${axis.output}"/>
        <axis-wsdl2java url="src/myservice.wsdl" output="${axis.output}">
            <mapping namespace="urn:myservice" package="com.company.service" />
            <mapping namespace="http://webserviceurl.com" package="com.company.service" />
        </axis-wsdl2java>
    </target>
    <target name="clean" description="Clean workspace">
        <delete dir="${build.dir}"/>
    </target>
    <target name="clean-all" depends="clean" description="Purge ivy cache">
        <ivy:cleancache/>
    </target>
</project>

axis-task。Properties是axis-ant.jar的一部分,但对ant不可用:
/build.xml:76: Problem: failed to create task or type axis-wsdl2java
它需要在ant类路径上。

一种简单的方法(但不推荐)是将所有axis jar文件放在ANT_HOME/lib中,但这会污染ant核心安装。最好输入它自己的路径,如axis.apache.org
所述另一种方法是将所有的ant插件库或第三方jar放在一个特殊的文件夹中,并通过ANT_ARGS环境变量使其可供ant使用。

或者将这一行放到ANT_HOME/bin/ant.sh中:

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

或创建自己的startscript,如下所示

平台:Ubuntu 16.04 LTS

首先,为了使该声明有效,您需要使用轴1而不是轴2。
然后按照这里的说明指定要使用的类路径。
在此之前,axis.home属性必须在二进制安装根目录build.xml中手动设置,即/opt/local/axis-1_4/,或者从环境变量AXIS_HOME中读取,指向相同的目录,如下所示:

  <property environment="env"/>
  <property name="axis.home" value="${env.AXIS_HOME}"/>

或在build.properties文件中设置。
您的*.jar子目录路径可能与${axis.home}/build/lib不同,在我的例子中是${axis.home}/lib

相关内容

  • 没有找到相关文章

最新更新