+1 за $ {eclipse.home}. Теперь я могу писать сценарии build.xml, которые относительно связаны с плагинами Eclipse, а не с хакерским программированием или копированием библиотек в проект.

я есть build.xml, который позволяет мне запускать тесты junit. Вот соответствующая часть:

<path id="JUnit 4.libraryclasspath">
    <pathelement location="../../../../../eclipse/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>
    <pathelement location="../../../../../eclipse/plugins/org.hamcrest.core_1.1.0.v20090501071000.jar"/>
</path>
<path id="MyProject.classpath">
    <pathelement location="bin"/>
    <path refid="JUnit 4.libraryclasspath"/>
</path>

<target name="run_unit_tests" depends="build">
        <mkdir dir="${junit.output.dir}"/>
        <junit printsummary="yes" haltonfailure="no">   
            <classpath refid="MyProject.classpath" />

            <formatter type="xml"/>
            <batchtest todir="${junit.output.dir}">
                    <fileset dir="${src}">
                            <include name="**/*Test*.java"/>
                    </fileset>
            </batchtest>
        </junit>
</target>

Если я заменю строку:

<pathelement location="../../../../../eclipse/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>

с участием

<pathelement location="${eclipse.home}/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>

Изменение нарушает путь к классам. Я получаю следующую ошибку:

<classpath> за<junit> должен включать junit.jar, если не в собственном пути к Ant

Насколько я понимаю, атрибут location должен иметь одинаковое значение в обоих случаях. Так в чем может быть причина?

Как побочный вопрос, этот файл сборки не будет работать в среде с другой версией junit (путь будет сломан). Можно ли добавить "общий" путь к junit.jar?

 Thorbjørn Ravn Andersen22 янв. 2011 г., 10:12
Правильно ли расширен eclipse.home?

Ответы на вопрос(2)

Решение Вопроса

где вы говорите, чтобы она находилась. Лично я бы полностью забыл связать файлы JAR, поставляемые с Eclipse, и вместо этогоскачать банки напрямую.

Если у меня есть проект, скажем, в пути/project тогда я бы попытался поместить зависимость где-то в этой иерархии, как в/project/test/lib/junit.jar, Если мой файл сборки муравья/project/build.xml тогда это так же просто, как добавление./test/lib/junit.jar в путь JUnit. Попытка сослаться на произвольное местоположение на вашем компьютере хрупка (помните, Eclipse может быть установленв любом месте), особенно при использовании относительных путей (поскольку содержимое вашего проекта можеттакже хранитьсяв любом месте).

если вы используете Linux. Таким образом, вы можете символически связать его с путем, который не включает версию. Например:

 ln -s plugins/org.junit4_4.5.0.v20090824/junit.jar /wherever/junit.jar

Вы можете захотеть иметь папку с библиотеками вне подкаталогов eclipse. Вы также можете рассмотреть возможность использованияплющ или Maven, чтобы управлять своими зависимостями.

Я не уверен, почему ваш приведенный выше пример не работает, но сообщение об ошибке означает, что junit.jar не найден. Вы уверены, что eclipse.home установлен? Вы можете повторить это с:

 <echo message="${eclipse.home}">
 jmort25301 сент. 2015 г., 18:29
+1 за $ {eclipse.home}. Теперь я могу писать сценарии build.xml, которые относительно связаны с плагинами Eclipse, а не с хакерским программированием или копированием библиотек в проект.

Ваш ответ на вопрос