<pathelement> 蚂蚁中的属性'path'和'location'有什么区别?



我在TestNG中使用Ant Java任务运行Selenium单元测试,如下所示:

<java classpathref="runtime.classpath"
    classname="org.testng.TestNG"
    failonerror="false">
    <arg value="-d" />
    <arg value="${grid.location}/target/reports" />
    <arg value="${lib.location}/testng.xml"/>   
</java>

runtime.classpath是一个包含<pathelement path="${basedir}/target/classes/" />的路径结构,我认为需要让TestNG知道要运行哪些类。

<path id="runtime.classpath">
        ...
        <!-- Target classes -->
        <pathelement path="${basedir}/target/classes/" />
</path>

但是,我一直在日志中看到TestNG发现0个适用的类。

我最终从一个同事那里得到了一些帮助,这似乎是关键的改变:

<path id="runtime.classpath">
        ...
        <!-- path attribute changed to location -->
        <pathelement location="${basedir}/target/classes/" />
</path>

这也可以正确地拉入测试类:

   <java classpathref="runtime.classpath"
       classname="org.testng.TestNG"
       failonerror="false">
       <arg value="-d" />
       <arg value="${grid.location}/target/reports" />
       <arg value="${lib.location}/testng.xml"/>
       <classpath>
           <pathelement location="${basedir}/target/classes/" />
       </classpath> 
   </java>

pathlocation属性有什么区别?我看过写一个简单的构建文件(特别是路径结构部分),但在那个手册中,我看起来像locationpath更具体。从经验来看,情况似乎并非如此,但我也不太明白为什么。

看起来路径和位置之间的区别是多个条目vs一个条目。位置可以是文件或目录,路径可以是列表。

来自手册

location属性指定一个相对的文件或目录到项目的基目录(或绝对文件名),而属性接受以冒号或分号分隔的的位置。path属性用于预定义的路径——在任何情况下,都是带有location属性的多个元素

注意,ant使用的JVM与java任务使用的JVM几乎没有关系。默认情况下,ant的环境与通过ant启动java任务的环境不同。当您想要使用与ant想要使用的JVM不同的JVM时,这实际上是有帮助的,并且使事情显式,有助于避免以后的意外。

查看java任务的文档,特别是clonevm

clonevm:如果设置为true,则所有系统属性和派生的Java虚拟机的bootclasspath将与运行Ant的Java虚拟机。默认为"false"(如果fork禁用)。Ant 1.7

相关内容

  • 没有找到相关文章

最新更新