Компиляция 1 файла с Javac / Ant также компилирует импортированный файл / класс в указанный файл - PullRequest
0 голосов
/ 08 ноября 2019

Задача состоит в том, чтобы отдельно скомпилировать классы Java и связанные с ними классы JUnit Test, используя Ant-скрипт. Обычные классы хранятся в «src», а тестовые классы хранятся в «test / src». Обычные классы должны быть скомпилированы в «bin», а тестовые классы - в «test / bin». Оба находятся в одном и том же пакете.

Мой скрипт Ant выглядит следующим образом:

<javac
     includeantruntime="false"
     classpathref="master-classpath"
     destdir="${test.class.build.dir}" 
                                        >
     <src path="${src.dir}"/>
     <src path="${test.class.dir}"/>
     <include name="**/*Test*.java"/>
</javac>

И запуск скрипта показывает, что будет скомпилирован только один файл:

    [javac] Compiling 1 source file to C:\Users\AK_Flex\Desktop\HW01\test\bin

Тем не менее, тестовый класс, а также обычный класс, который он импортирует (уже скомпилирован в 'bin'), компилируются и выводятся в папку 'test / bin'. Обычные классы не импортируют тестовые классы, поэтому «bin» выглядит так, как нужно. (код не показан) Есть ли способ обойти это поведение компилятора?

1 Ответ

1 голос
/ 08 ноября 2019

Поскольку вы хотите, чтобы скомпилированные классы находились в двух разных папках, вам необходимо выполнить два этапа компиляции.

<javac includeantruntime="false"
       srcdir="src"
       destdir="bin"
       classpathref="master-classpath">
</javac>
<javac includeantruntime="false"
       srcdir="test/src"
       destdir="test/bin">
    <classpath>
        <pathelement location="bin"/>
        <path refid="master-classpath"/>
    </classpath>
</javac>
...