Maven: использование внешних библиотек для тестирования интеграции - PullRequest
0 голосов
/ 27 ноября 2011

В настоящее время я установил комплект интеграционных тестов.База - это проект Maven с несколькими модулями, которые зависят друг от друга для настройки базы данных, добавления в нее некоторых данных и запуска тестов перед тем, как все закончить.Кроме того, у меня есть модули с некоторыми утилитами и тестовыми данными.

Первый шаг (не упомянутый выше) - это копия сжатого изображения, которое включает в себя множество файлов JAR, которые составляют пакет программного обеспечения,испытания.К сожалению, программное обеспечение создается не Maven, а Ant, поэтому я не могу найти материал в Artifactory или в чем-то подобном.

Моя проблема в том, что я копирую и разархивирую изображение с помощью интеграционного тестаметод, но я не знаю, как я могу добавить файлы JAR в путь к классу Maven.Все остальные модули нужно скомпилировать и запустить с использованием jar-файлов, извлеченных из ZIP-файла.

Как добавить JAR-файлы в путь к классу Maven для последующей компиляции и запуска тестов?Назначением содержимого ZIP всегда является один и тот же каталог.К сожалению, имена JAR-файлов содержат информацию о версии (номера сборки), которая меняется.Так что простое использование системы и тега не так легко работает.Запись пути, например, $ {package.path} / lib / * / .jar была бы отличной.Может быть, есть плагин?

Или у кого-нибудь есть идея лучше настроить интеграционный тест для предварительно собранных JAR-файлов?

1 Ответ

1 голос
/ 27 ноября 2011

Создайте один jar из всех ваших зависимостей, всего в ${package.path}/lib/*/.jar.

Вы можете использовать задачу ant для создания этого jar, либо до запуска maven, либо как часть вашей сборки maven.

Чтобы объединить ваши банки, вы можете использовать Ant Jar Task (see section Слияние архивов).Оттуда:

<jar destfile="build/main/checksites.jar">
    <fileset dir="build/main/classes"/>
    <restrict>
     <name name="**/*.class"/>
     <archives>
       <zips>
         <fileset dir="lib/main" includes="**/*.jar"/>
       </zips>
     </archives>
    </restrict>
</jar>

Это создает файл jar, в который встраиваются все классы из всех jar-файлов в lib / main.

Затем можно использовать системную область видимости, которая указывает на этот jar какнормально в мавене.Примечание: если вы создаете банку в maven (через ant), то вам нужно создать банку в target, чтобы она правильно очищалась.

Чтобы использовать файл сборки ant из maven, вы можете использовать плагин maven antrun , аналогично:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>

    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <property name="local.project.artifact.name" value="${project.build.finalName}" />
                    <property name="local.distribution.artifact.name" value="${local.project.artifact.name}-distribution" />
                    <property name="local.distribution.artifact.file" value="${project.build.directory}/${local.distribution.artifact.name}.zip" />
                    <ant antfile="build-deploy.xml" />
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

Запускает файл сборки ant build-deploy.xml в фазе пакета.Изменения, необходимые для вашей системы, оставлены читателю в качестве упражнения: -).

...