运行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运行以root身份时,正常运行。
echo $ PATH = /usr/java/current/bin:/usr/local/apache-ant-1.6.5/bin:/usr/lib/qt-3.3/bin:/usr/local/sbin:/ USR / local / bin中:/ sbin目录:/ bin中:/ usr / sbin目录:在/ usr / bin中:/根/ bin中
在第二台计算机上,我们创建了单独的用户帐户,当我们尝试从/ home / rajan / R7_SP1_UTF8 / vermaraj_R7_SP1 / vobs / project / ip_src / AdminWebConsole运行 ant以root或rajan 时ant 无法正常工作。
echo $ PATH:/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root / bin中
此外,在两台构建机器中,echo $ CLASSPATH为空
locate axis-ant.jar将输出显示为:
ivy不是一个选项,因为这是非常大的代码库的一部分,如果我们添加额外的库,它可能会产生问题。
答案 0 :(得分:2)
ANT任务似乎确实有一组复杂的dependencies。我建议添加ivy extension来管理这些内容。
├── 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
<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>
答案 1 :(得分:0)
axis-task.properties是axis-ant.jar的一部分,但它不适用于ant:
/build.xml:76: Problem: failed to create task or type axis-wsdl2java
它需要在ant classpath上。
一个简单的方法 - 但不推荐 - 是将所有轴jar放在ANT_HOME / lib中,但这会污染ant核心安装。最好在axis.apache.org上将here描述为自己的路径 另一种方法是将所有的ant插件库或第三方jar放在一个特殊的文件夹中,并通过ANT_ARGS环境变量使其可用于ant。
将此行放在ANT_HOME / bin / ant.sh中:
ANT_ARGS="-lib /usr/local/ant_xtralibs:/usr/local/ant_testlibs"
export ANT_ARGS
或按照here
所述创建自己的启动脚本答案 2 :(得分:0)
平台:Ubuntu 16.04 LTS
首先,要使该语句有效,您需要使用Axis 1(下载:here)而不是Axis2。
然后按照说明here指定要使用的类路径。
在此之前,必须在二进制安装根目录axis.home
的{{1}}中手动设置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
。