我使用以下命令创建了一个带有单元测试的axis2 soap客户端项目:
wsdl2java -t -uri http://myDomain.tld/myService.svc?wsdl
然后我运行了ant
并且遇到了构建错误,因为它找不到junit方法,例如fail(),assertNotNull()等。我意识到我需要编译器引用一个junit jar。查看build.xml
我看到以下内容:
<property name="classes" value="${build}/classes"/>
<property name="lib" value="${build}/lib"/>
所以我将junit-4.8.2.jar
放在build.lib子文件夹中。我仍然得到同样的错误。我还需要做些什么才能让ant来构建我的项目?
更新
我对build.xml进行了以下更改:
将lib文件夹添加为id local.class.path
的路径<path id="local.class.path">
<fileset dir="${lib}">
<include name="*.jar"/>
</fileset>
</path>
然后我修改了我的init任务以寻找junit:
<available classpathref="local.class.path" property="junit.available" classname="junit.framework.TestCase"/>
<condition property="jars.ok">
<and>
<isset property="stax.available"/>
<isset property="axis2.available"/>
<isset property="junit.available"/>
</and>
</condition>
<!--Print out the availabilities-->
<echo message="Stax Availability= ${stax.available}"/>
<echo message="Axis2 Availability= ${axis2.available}"/>
<echo message="JUnit Availability= ${junit.available}"/>
奇怪的是输出是:
H:\Code\Java\test.axis2> ant pre.compile.test
Buildfile: H:\Code\Java\RiskTools.axis2\build.xml
init:
[mkdir] Created dir: H:\Code\Java\test.axis2\build
[mkdir] Created dir: H:\Code\Java\test.axis2\build\classes
[mkdir] Created dir: H:\Code\Java\test.axis2\build\lib
pre.compile.test:
[echo] Stax Availability= true
[echo] Axis2 Availability= true
[echo] JUnit Availability= ${junit.available}
BUILD SUCCESSFUL
Total time: 0 seconds
所以看来我做错了,因为行 [echo] JUnit Availability = $ {junit.available}
答案 0 :(得分:0)
显然build/lib
是被ant clean
吹走的瞬态文件夹。我在项目根目录下创建了一个名为lib的文件夹,然后对build.xml执行了以下操作。
在根目录中我添加了<property name="dep_libs" value="${project.base.dir}/lib"/>
然后我将上面的路径声明更改为:
<path id="local.class.path">
<fileset dir="${dep_libs}">
<include name="*.jar"/>
</fileset>
</path>
然后一切正常。