我试图让ant编译并继续获取:
无法找到taskdef class org.testng.TestNGAntTask
我看到的大多数示例都在类路径中有这个:${libs.dir}/testng-6.8.jar
我也尝试过:
<taskdef name="testng" classpath="${test.classpath}"
classname="org.testng.TestNGAntTask" />
我的build.xml的一部分
<property environment="env"/>
<property name="ws.home" value="${basedir}"/>
<property name="ws.jars" value="C:\jars"/>
<property name="test.dest" value="${ws.home}/build"/>
<property name="test.src" value="${ws.home}/src"/>
<property name="ng.result" value="test-output"/>
<target name="setClassPath" unless="test.classpath">
<path id="classpath_jars">
<fileset dir="${ws.jars}" includes="*.jar"/>
</path>
<pathconvert pathsep=":" property="test.classpath" refid="classpath_jars"/>
</target>
我应该使用哪条路径,以及如何知道我拥有的testng.jar
版本
如果我使用-v
进行编译,我会得到:
[echo] classpath------: C:\jars\testng.jar
我将testng.jar
复制到此目录但仍然没有运气。
答案 0 :(得分:3)
创建任务时,请尝试使用路径引用而不是属性。例如:
<path id="classpath_jars">
<fileset dir="${ws.jars}" includes="*.jar"/>
</path>
<taskdef name="testng" classpathref="classpath_jars" classname="org.testng.TestNGAntTask" />
我应该使用哪条路径,以及如何知道我的testng.jar版本 有
您是否考虑过为构建添加Maven样式依赖关系管理? 这可以让您更加确定您的构建过程正在使用哪些罐子。按照目前的情况,您依靠手动配置将正确的jar放在预期的目录中。
依赖关系管理是Apache ivy插件提供的功能。它提供了额外的任务,使您能够通过从Central Maven repository自动下载和缓存的jar来管理类路径。
例如:
<ivy:cachepath pathid="build.path">
<dependency org="org.testng" name="testng" rev="6.11" conf="default"/>
</ivy:cachepath>
<taskdef name="testng" classpathref="build.path" classname="org.testng.TestNGAntTask" />
以下更完整的示例演示了如何配置ANT以自动设置ivy插件,使您的构建可在所有计算机上移植。您只需要安装Java和ANT。
<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">
<!--
================
Build properties
================
-->
<available classname="org.apache.ivy.Main" property="ivy.installed"/>
<!--
==========
Build main
==========
-->
<target name="build" depends="install-ivy">
<ivy:cachepath pathid="build.path">
<dependency org="org.testng" name="testng" rev="6.11" conf="default"/>
</ivy:cachepath>
<taskdef name="testng" classpathref="build.path" classname="org.testng.TestNGAntTask" />
</target>
<!--
===========
Build setup
===========
-->
<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.4.0/ivy-2.4.0.jar"/>
<fail message="Ivy has been installed. Run the build again"/>
</target>
</project>