Должен ли файл junit.jar находиться в каталоге ant lib для запуска задачи junit - PullRequest
1 голос
/ 17 февраля 2012

Я строил файл сборки Ant, который работал должным образом в моем проекте eclipse, но не в нашей конфигурации автоматической сборки Jenkins. Я установил ant на свой компьютер и запустил сборку с консоли. Это сработало, но я понял, что он не использовал junit-4.10.jar в моем проекте lib, как я хотел, а junit.jar в ant lib. После переименования файлов junit.jar в моей ant lib сборка ant не сработала.

Таким образом, в основном проблема в нашей автоматической сборке Jenkins заключается в том, что в его собственном каталоге ant lib нет файла junit.jar. Могу ли я указать задачу junit для использования jar в моем проекте lib вместо того, что в ant lib?

РЕДАКТИРОВАТЬ: я изменил свой файл build.xml, и теперь он выглядит так, все еще не работает. Мой junit-4.10.jar находится в каталоге / war / WEB-INF / lib / test:

<project name="vlp" default="junit" basedir=".">
    <tstamp />
    <!-- ################# PROPERTIES ################ -->
    <!-- directory properties -->
    <!-- source -->
    <property name="vlp.src" location="src" />
    <property name="vlp.test" location="test" />
    <!-- build -->
    <property name="src.build" location="bin/src" />
    <property name="test.build" location="bin/test" />
    <!-- libraries -->
    <property name="vlp.lib.dir" location="war/WEB-INF/lib" />
    <property name="vlp.testlib.dir" location="war/WEB-INF/lib/test" />
    <!-- compile classpath -->
    <path id="compile.path">
        <fileset dir="${vlp.lib.dir}" includes="*.jar" />
    </path>
    <!-- test classpath -->
    <path id="test.path">
        <fileset dir="${vlp.testlib.dir}" includes="*.jar" />
        <path refid="compile.path" />
    </path>
    <!-- ############### CLEANING ################## -->
    <!-- Cleaning old compile files -->
    <target name="clean" description="Clean all the old build files.">
        <delete dir="${src.build}" />
        <delete dir="${dist}" />
    </target>
    <!-- ############## COMPILATION ############### -->
    <!-- Compile source -->
    <target name="src.compile" depends="clean" description="Compile the source code when everything has been cleaned.">
        <mkdir dir="${src.build}" />
        <javac encoding="utf-8" destdir="${src.build}" nowarn="true">
            <src path="${vlp.src}" />
            <classpath refid="compile.path" />
        </javac>
    </target>
    <!-- Compile test -->
    <target name="test.compile" depends="clean" description="Compile the source code when everything has been cleaned.">
        <mkdir dir="${test.build}" />
        <javac encoding="utf-8" destdir="${test.build}" nowarn="true">
            <src path="${vlp.test}" />
            <classpath>
                <pathelement location="${src.build}" />
                <path refid="test.path" />
            </classpath>
        </javac>
    </target>
    <!-- ########### RUNS JUNIT TEST ############ -->
    <target name="junit" depends="src.compile,test.compile" description="Runs all the unit test in the application. Does not halt build if test are failed.">
        <junit printsummary="on" haltonfailure="false" showoutput="true">
            <formatter type="brief" usefile="false" />
            <classpath>
                <pathelement location="${test.build}" />
                <path refid="test.path" />
            </classpath>
            <batchtest>
                <fileset dir="${vlp.test}">
                    <include name="**/Test*.java" />
                    <exclude name="**/AllTests.java" />
                </fileset>
            </batchtest>
        </junit>
    </target>
</project>

РЕДАКТИРОВАТЬ: вопрос Simlar можно найти здесь с другим ответом, который работает хорошо. Обратите внимание, что установить на компьютере ant-junit намного проще, чем пытаться добавить его в свои библиотеки и все такое.

1 Ответ

1 голос
/ 17 февраля 2012

См. Ответ на этот вопрос:

база данных H2 org.h2.Driver ClassNotFoundException

Обычно я указываю банку junit, которая будет находиться на пути к классам тестаиспользуйте его при вызове задачи ANIT junit


Update

Следующий файл сборки является примером исходного шаблона, который я использовал для своих сборок.

Устанавливает инфраструктуру, которая использует ivy для управления путями классов.Зависимости загружаются из Центральное хранилище Maven (по умолчанию).Делает сборку намного более переносимой и повторяемой.

build.xml

<project name="ivy demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">

    <!--
    ==========
    Properties
    ==========
    -->
    <property name="build.dir"  location="build"/>
    <property name="class.dir"  location="${build.dir}/classes"/>
    <property name="report.dir" location="${build.dir}/reports"/>

    <!-- 
    =======
    Targets
    =======
    -->
    <target name="install-ivy" description="Used to install the ivy task jar">
        <mkdir dir="${user.home}/.ant/lib"/>
        <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar"/>
    </target>

    <target name="init" description="Download dependencies, setup project classpaths and create build directories">
        <ivy:resolve/>

        <ivy:cachepath pathid="compile.path" conf="compile"/>
        <ivy:cachepath pathid="runtime.path" conf="runtime"/>
        <ivy:cachepath pathid="test.path"    conf="test"/>

        <ivy:report todir="${report.dir}" graph="false"/>

        <mkdir dir="${class.dir}"/>
    </target>

    <target name="build" depends="init" description="Build the project">
        <echo message="Build logic goes here"/>
    </target>

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

    <target name="clean-all" depends="clean" description="Purge ivy cache">
        <ivy:cleancache />
    </target>

</project>

ivy.xml

Этот файл используется для указания зависимостей проекта.Конфигурации плюща используются для управления группировками classpath.

<ivy-module version="2.0">
    <info organisation="org.demo" module="demo"/>
    <configurations>
        <conf name="compile"/>
        <conf name="runtime" extends="compile"/>
        <conf name="test"    extends="runtime"/>
    </configurations>
    <!--
    Dependencies can be found using Maven Central's search site:

        http://search.maven.org/
    -->
    <dependencies>
        <!-- Compile dependencies -->
        <dependency org="org.slf4j" name="slf4j-api" rev="1.6.4" conf="compile->default"/>

        <!-- Runtime dependencies -->
        <dependency org="log4j" name="log4j" rev="1.2.16" conf="runtime->default"/>

        <!-- Test dependencies -->
        <dependency org="junit" name="junit" rev="4.10" conf="test->default"/>
    </dependencies>
</ivy-module>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...