我已经设置了一个ant脚本作为eclipse构建器来自动运行我的所有测试,如下所示:
<project name="auto-test" default="test">
<property name="tst-dir" location="C:\STAF\services\custom\TopCoder\bin" />
<path id="classpath.base" />
<path id="classpath.test">
<pathelement location="D:\eclipse\eclipse\plugins\org.junit4_4.3.1\junit.jar" />
<pathelement location="${tst-dir}" />
<path refid="classpath.base" />
</path>
<target name="test" description="Run the tests">
<junit>
<classpath refid="classpath.test" />
<formatter type="brief" usefile="false" />
<test name="testDataGenerator.test.AllTests" />
</junit>
</target>
</project>
在将测试夹具文件从绝对路径更改为相对路径之前,这一切都很好:
SAXReader reader = new SAXReader();
Document document = reader.read(new File(".").getCanonicalPath()+"\\conf\\TestData.xml");
现在,ant任务尝试打开 D:\ eclipse \ eclipse \ conf \ TestData.xml ,而不是 C:\ STAF \ services \ custom \ TopCoder \ conf \ TestData。 xml ,我也尝试从Eclipse手动运行AllTests,这一切都很好。
之前有没有人遇到类似的问题?
提前致谢。
PS。 ANT_HOME = d:\蚀\蚀\插件\ org.apache.ant_1.7.0.v200706080842
跟进: 我试图从命令行运行ant脚本,并在下面找到:
C:\ STAF \ services \ custom \ TopCoder&gt; ant -fc:\ STAF \ services \ custom \ TopCoder \ task \ build.xml ,ant脚本正常工作。< / p>
C:&gt; ant -fc:\ STAF \ services \ custom \ TopCoder \ task \ build.xml ,脚本将声明:[junit] C:\ conf \ TestData .xml(系统找不到指定的路径)
我还检查过eclipse builder设置,似乎没有什么可以改变 D:\ eclipse \ eclipse的路径。
答案 0 :(得分:1)
Java解析当前用户目录的相对路径,该目录通常是调用java程序的目录。
克服此问题的一种方法是为基本路径定义环境变量。然后,您可以轻松使用“相对路径”(意思是,通过连接基本路径和相对路径来创建绝对路径)。
答案 1 :(得分:1)
以下是我找到的解决方案:
就像kgiannakakis提到的那样,Ant也从它被调用的位置开始执行它的任务,所以我们只需要更改自定义eclipse构建器的工作目录设置。
在JRE选项卡中,选择“执行环境”。
将工作目录更改为当前工作区。
答案 2 :(得分:0)
看起来我已经错过了业力,但无论如何......
我们这样做: -
在build.xml
<project name="whatever">
<property file="build.${env.COMPUTERNAME}.properties"/>
<property file="build.properties"/>
build.properties
project.root=..
build.file.dir=${project.root}/buildfiles
deploy.dir=${project.root}/deploy
当然,您可以通过创建OWN build.computername.properties来覆盖,以允许开发人员路径差异等