如何使用 Ant(在 Eclipse 之外...)构建 Selenium Web Driver java 应用程序?

How to build a Selenium Web Driver java application using Ant (outside Eclipse ...)?

首先.....我是Apache Ant的新手。

我正在尝试使用它来构建一个使用 Selenium Web 驱动程序库的简单 java 应用程序。

我从教程:Hello World with Apache Ant(参考文献 http://ant.apache.org/manual/index.html)开始构建一个简单的 "Hello world",它还解释了如何使用外部库(在示例中为 log4J 库 . ..).

一切正常.. 然后我尝试更改我的第一个构建文件以在我的 java 应用程序中使用 Selenium Web Driver 库对其进行适配。

这是我的目录结构....

我的 java 源代码在我磁盘的另一个目录中,但这不是问题所在(我认为...)

在 lib 目录下我有 selenium-java-2.46.0.jar 在 libs 子目录下我有所有其他的 selenium 库所以 ...

(请注意,这不是所有库的完整列表......它只是为了解释我的文件组织......)。

这是我的 build.xml 文件 ...

<project name="Bdo" basedir="." default="main">

<property name="src.dir"     value="D:/Cesare/Lavoro/WorkspaceEclipse/TestSelenium/TestSeleniumProgetti/src/myProjects"/>
<property name="build.dir"   value="Bdo"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir"     value="${build.dir}/jar"/>
<property name="main-class"  value="myProjects.bdoTest_01"/>
<property name="lib.dir" value="lib"/>

<path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>

<target name="clean">
    <delete dir="${build.dir}"/>
</target>

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
</target>

<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
        <manifest>
            <attribute name="Class-Path" value="../../${lib.dir}/selenium-java-2.46.0.jar ../../${lib.dir}/libs/apache-mime4j-0.6.jar ../../${lib.dir}/libs/bsh-1.3.0.jar ../../${lib.dir}/cglib-nodep-2.1_3.jar ../../${lib.dir}/libs/commons-codec-1.10.jar  ../../${lib.dir}/libs/commons-collections-3.2.1.jar ../../${lib.dir}/commons-exec-1.3.jar ../../${lib.dir}/commons-io-2.4.jar ../../${lib.dir}/libs/commons-lang3-3.4.jar  ../../${lib.dir}/libs/commons-logging-1.1.3.jar ../../${lib.dir}/cssparser-0.9.16.jar ../../${lib.dir}/gson-2.3.1.jar ../../${lib.dir}/libs/guava-18.0.jar  ../../${lib.dir}/libs/hamcrest-core-1.3.jar ../../${lib.dir}/hamcrest-library-1.3.jar ../../${lib.dir}/htmlunit-2.17.jar ../../${lib.dir}/libs/htmlunit-core-js-2.17.jar  ../../${lib.dir}/libs/httpclient-4.4.1.jar ../../${lib.dir}/httpcore-4.4.1.jar ../../${lib.dir}/httpmime-4.4.1.jar ../../${lib.dir}/libs/jcommander-1.29.jar  ../../${lib.dir}/libs/jetty-io-9.2.11.v20150529.jar ../../${lib.dir}/jetty-util-9.2.11.v20150529.jar ../../${lib.dir}/jna-4.1.0.jar ../../${lib.dir}/libs/jna-platform-4.1.0.jar  ../../${lib.dir}/libs/junit-dep-4.11.jar ../../${lib.dir}/nekohtml-1.9.22.jar ../../${lib.dir}/netty-3.5.7.Final.jar ../../${lib.dir}/libs/phantomjsdriver-1.2.1.jar  ../../${lib.dir}/libs/sac-1.3.jar ../../${lib.dir}/serializer-2.7.2.jar ../../${lib.dir}/testng-6.8.5.jar ../../${lib.dir}/libs/websocket-api-9.2.11.v20150529.jar  ../../${lib.dir}/libs/websocket-client-9.2.11.v20150529.jar ../../${lib.dir}/websocket-common-9.2.11.v20150529.jar ../../${lib.dir}/xalan-2.7.2.jar ../../${lib.dir}/libs/xercesImpl-2.11.0.jar  ../../${lib.dir}/libs/xml-apis-1.4.01.jar "/>            
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
    </jar>
</target>

<target name="run" depends="jar">
    <java fork="true" classname="${main-class}">
        <classpath>
            <path refid="classpath"/>
            <path location="${jar.dir}/${ant.project.name}.jar"/>
        </classpath>
    </java>
</target>

<target name="clean-build" depends="clean,jar"/>

<target name="main" depends="clean,run"/>

当我执行命令时

ant run

一切正常,我可以看到我的应用程序正在运行...

当我尝试使用命令执行 jar 时

java -jar Bdo.jar

我有以下错误

我认为 ClassPath 出了点问题,但似乎所有的库路径都没有问题....

有什么建议吗?

非常感谢您!!!

切萨雷

类路径中的某些路径不包含 libs 目录。 gson-2.3.1.jar 就是这样一条路径。