运行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给出如下输出:
- /home/Rajan R7_SP1_UTF8/vermaraj_R7_SP1 vobs/项目/ip_src/AdminWebConsole/lib/axis-ant.jar
- /home/Rajan/R7_SP1_UTF8/vermaraj_R7_SP1/vobs/项目/ip_src/AdminWebConsole/输出/战争/web - inf/lib/axis-ant.jar
- /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
。