Как сделать так, чтобы тестовый jar включал зависимости в Maven? - PullRequest
11 голосов
/ 09 августа 2011

У меня есть проект со структурой src / main / java и src / test / java, и мне удалось использовать maven-jar-plugin для создания jar тестовой ветви.Однако я хочу упаковать тестовую флягу так, чтобы все зависимости были решены.Есть ли способ, которым я могу сказать maven-jar-plugin включить зависимости ??

Спасибо!

Фрэнк

Ответы [ 6 ]

31 голосов
/ 03 августа 2012

У меня была похожая проблема с интеграционными тестами, которые мне нужно запустить на Hadoop.Наши интеграционные тесты находятся в папке test отдельного модуля интеграционных тестов, поэтому для упрощения нашей жизни требуется test-jar-with-dependencies.

Я использую плагин для сборки как упомянуто Michael-O.Мой дескриптор сборки находится в src/main/assembly/test-jar-with-dependencies.xml и является модификацией стандартного дескриптора jar-with-dependencies, который является частью плагина:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>test-jar-with-dependencies</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <!-- we're creating the test-jar as an attachement -->
            <useProjectAttachments>true</useProjectAttachments>
            <unpack>true</unpack>
            <scope>test</scope>
        </dependencySet>
    </dependencySets>
</assembly>

Эта сборка опирается на test-jarсоздан как часть сборки модуля.Поэтому я добавил в модуль pom.xml следующее:

<!-- create a complete jar for testing in other environments -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>                    
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>test-jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptors>
            <descriptor>src/main/assembly/test-jar-with-dependencies.xml</descriptor>
        </descriptors>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
2 голосов
/ 09 августа 2011

Вы можете сделать это: создать сборку jar с помощью плагина , распаковать зависимости, упаковать новый тестовый jar и прикрепить его к реакторуВсе готово.

Дескриптор упаковки может выглядеть следующим образом: this .

0 голосов
/ 03 марта 2016

Следующее работает для Maven 3

POM.XML

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <goals>
                <goal>test-jar</goal>
            </goals>
            <phase>test-compile</phase>
        </execution>
    </executions>
</plugin>

ФАЙЛ СБОРКИ

<dependencySet>
    <outputDirectory>demo/test-lib</outputDirectory>
    <includes>
        <!--test only dependencies (like netty)-->     
        <include>io.netty:netty-all</include>
        <!-- the actual test jar-->
        <include>${project.groupId}:${project.artifactId}:test-jar</include>
    </includes>
    <useProjectAttachments>true</useProjectAttachments>
    <scope>test</scope>
</dependencySet>
0 голосов
/ 21 мая 2015

для включения зависимости test-jar в вашу сборку укажите фильтр включения сборки debendencySet, как показано ниже:

...
<dependencySet>
    <outputDirectory>/</outputDirectory>
    <includes>
        <include>*:jar:*</include>
        <include>*:test-jar:*</include>
    </includes>
</dependencySet>
...
0 голосов
/ 10 декабря 2014
    <dependency>
        <groupId>me.wener.xxx</groupId>
        <artifactId>xxx-core</artifactId>
        <version>${xxx.version}</version>
        <type>test-jar</type>
        <!-- <scope>test</scope> -->
    </dependency>

Я использую это, чтобы включить тестовую банку. Важная строка - <type>test-jar</type>. Я не уверен, что это то, что вам нужно.

3 года назад, но может помочь другим. По крайней мере, это помогло мне. : -)

0 голосов
/ 09 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...