簡體   English   中英

為什么常春藤不編譯我的課程?

[英]Why ivy doesn't compile my class?

我正在使用ANT和IVY來解決依賴關系並構建項目。 我必須編寫一個硒測試用例,因此我在IVY文件中包括了硒依賴關系,如下所示:

<dependency org="org.seleniumhq.selenium" name="selenium-java" rev="2.48.2"/>

IVY能夠下載依賴項,但是當我使用ANT編譯項目時,它失敗並顯示以下錯誤:

    cannot find symbol
    [javac] symbol  : class WebDriver
    [javac] location: class com.barclays.test.selenium.TestSelenium
    [javac]         WebDriver driver = new FirefoxDriver();

所以你能讓我知道我想念的任何東西嗎?

編輯:

build.xml的一部分:

<target name="init">
        <ivy:resolve />
        <ivy:cachepath pathid="compile.path" conf="compile" />
        <ivy:cachepath pathid="test.path" conf="test" />
    </target>

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

    <target name="prepare" depends="clean" description="Create working dirs and copy static files to work dir">
        <mkdir dir="${target.dir}/WEB-INF/classes" />
        <mkdir dir="${target.dir}/WEB-INF/classes-test" />
        <!-- Copy static HTML and JSP files to work dir -->
        <copy todir="${target.dir}">
            <fileset dir="${web.home}" />
        </copy>
    </target>

    <target name="compile" depends="prepare, init" description="Compile Java sources and copy to WEB-INF/classes dir">
        <javac srcdir="${src.dir}" includeantruntime="false" debug="true" classpathref="compile.path" destdir="${target.dir}/WEB-INF/classes">
        </javac>

        <javac srcdir="${test.dir}" includeantruntime="false" debug="true" classpathref="test.path" destdir="${target.dir}/WEB-INF/classes-test">
            <classpath>
                <pathelement location="${target.dir}/WEB-INF/classes" />
            </classpath>
        </javac>

        <copy todir="${target.dir}/WEB-INF/classes">
            <fileset dir="${src.dir}" excludes="**/*.java" />
        </copy>

    </target>

和ivy.xml:

<ivy-module version="2.0">
    <info organisation="org.apache" module="test-ivy" />

    <configurations>
        <conf name="runtime" />
        <conf name="compile" extends="runtime" description="provides the 
compiler" />
        <conf name="test"    description="Required for test only" extends="runtime"/>
    </configurations>

    <dependencies>
        <dependency org="javax.servlet" name="servlet-api" rev="2.5" />
        <dependency org="junit" name="junit" rev="4.12" />
        <dependency org="org.seleniumhq.selenium" name="selenium-java" rev="2.48.2" conf="test-java->default"/>
  <dependency org="log4j" name="log4j" rev="1.2.16" conf="compile->*" />
    </dependencies>
</ivy-module>

與log4j同樣的情況。 我已經添加了依賴性,但是當我嘗試創建Logger對象時,使用代碼輔助時eclipse不會列出log4j的記錄器。

謝謝

在build.xml中,您不是使用測試類路徑來編譯測試類,而是使用編譯類路徑來編譯測試類。

Classpathref應該設置為test.path

<javac srcdir="${test.dir}" includeantruntime="false" debug="true" classpathref="test.path" destdir="${target.dir}/WEB-INF/classes-test">
            <classpath>
                <pathelement location="${target.dir}/WEB-INF/classes" />
            </classpath>
        </javac>

並且應該為每個常春藤依賴項定義范圍。 像這樣:

 <!-- Compile time-->
    <dependency org="log4j" name="log4j" rev="1.2.14" conf="compile->*"/>

 <!-- test time-->
    <dependency org="log4j" name="log4j" rev="1.2.14" conf="test->*"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM