Почему мой второй тестовый класс не увидел класс из другого модуля? - PullRequest
0 голосов
/ 24 марта 2019

Я недавно работал с Ant + Ivy, и у меня есть такой вопрос. У меня два модуля: module1 -> module2. В тесте module2 я использовал класс из module1. На самом деле тесты в module1 прошли успешно. Я не понимаю, почему тесты дают сбой моему module2, потому что я уже импортирую module1 по зависимостям ivy, но у меня есть ошибка, которая выглядит так:

C:\builders\builders\src\test\java\com\builders\module2\Module2Test.java:3: error: package com.builders.module1 does not exist
    [javac] import com.builders.module1.Module1;

Вот мой модуль2 / ivy.xml:

<ivy-module version="1.0">
    <info organisation="com.builders"
          module="module2"
          status="integration"/>

    <dependencies>
        <dependency org="junit" name="junit" rev="4.12"/>
        <dependency name="module1" rev="latest.integration"/>
    </dependencies>
</ivy-module>

my build.xml

<project name="common" xmlns:ivy="antlib:org.apache.ivy.ant">

    <property file="${common.dir}/build.properties"/>

    <property name="ivy.jar.dir" value="${user.home}/.ivy2/jars"/>
    <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/>

    <target name="load-ivy">
        <path id="ivy.lib.path">
            <pathelement location="${ivy.jar.file}"/>
        </path>
        <taskdef resource="org/apache/ivy/ant/antlib.xml"
                 uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
    </target>

    <path id="lib.path.id">
        <fileset dir="${lib.dir}"/>
    </path>

    <path id="classpath.test">
        <pathelement location="lib/junit-jar-4.12.jar"/>
        <pathelement location="lib/hamcrest-core-jar-1.3.jar"/>
        <pathelement location="${classes.dir}"/>
    </path>

    <property name="ivy.local.default.root" value="${repository.dir}/local"/>
    <property name="ivy.shared.default.root" value="${repository.dir}/shared"/>


    <target name="resolve" depends="clean-lib, load-ivy" description="--> resolve and retrieve dependencies with ivy">
        <mkdir dir="${lib.dir}"/>
        <ivy:resolve file="${ivy.file}"/>
        <ivy:retrieve pattern="${lib.dir}/[artifact]-[type]-[revision].[ext]"/>
    </target>

    <target name="compile" depends="resolve" description="--> compile the project">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="lib.path.id" debug="true" includeAntRuntime="false"/>
    </target>

    <target name="ivy-new-version" depends="load-ivy" unless="ivy.new.revision">
        <property name="module.version.prefix" value="${module.version.target}-dev-b"/>
        <ivy:info file="${ivy.file}"/>
        <ivy:buildnumber organisation="${ivy.organisation}" module="${ivy.module}"
                revision="${module.version.prefix}" defaultBuildNumber="1" revSep=""/>
    </target>

    <target name="version" depends="ivy-new-version">
        <mkdir dir="${classes.dir}"/>
        <echo message="version=${ivy.new.revision}" file="${classes.dir}/${ant.project.name}.properties" append="false"/>
        <property file="${classes.dir}/${ant.project.name}.properties"/>
    </target>

    <target name="publish" depends="clean-build, jar, test-compile" description="--> publish this project in the ivy repository">
        <ivy:publish artifactspattern="${build.dir}/[artifact].[ext]"
                     resolver="shared"
                     pubrevision="1.0"
                     status="release"/>
    </target>

    <target name="test-compile">
        <mkdir dir="${test.build.dir}"/>
        <javac srcdir="${test.src.dir}" destdir="${test.build.dir}" includeantruntime="false">
            <classpath>
                <path refid="classpath.test"/>
                <pathelement location="${lib.dir}"/>
            </classpath>
        </javac>
    </target>

    <target name="test" depends="test-compile">
            <junit printsummary="yes" haltonfailure="no" fork="true">
                <classpath>
                    <path refid="classpath.test"/>
                    <pathelement location="${test.build.dir}"/>
                </classpath>
                <formatter type="brief" usefile="false" />
                <batchtest>
                    <fileset dir="${test.src.dir}" includes="**/*Test.java" />
                </batchtest>
            </junit>
    </target>

    <target name="clean-build" description="--> clean the project built files">
        <delete includeemptydirs="true" dir="${build.dir}"/>
    </target>

    <target name="clean-lib" description="--> clean the project libraries directory (dependencies)">
        <delete includeemptydirs="true" dir="${lib.dir}"/>
    </target>

    <target name="clean-repository">
        <delete includeemptydirs="true" dir="${repository.dir}"/>
    </target>

    <target name="clean" depends="clean-build, clean-lib, clean-repository" description="--> clean the project"/>
</project>

Что я пропустил? Как это можно улучшить?

...