как добавить этап до и после интеграции в maven-failsafe-plugin

У меня есть сервер приложений netty, который необходимо запустить на этапе до тестирования интеграции и остановить его на этапе тестирования после интеграции для целей тестирования IntegrationTests. . Я использовал maven-failsafe-plugin. Но я не знаю, как выполнить основной класс на этапе тестирования перед интеграцией и как остановить сервер после выполнения. Также мой основной класс находится в подмодуле проекта. Я создал профиль для запуска IntegrationTest в родительском pom.

     <profile>
        <id>integration-tests</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <modules>
            <module>application_module1</module>
        </modules>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.14.1</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.9.1</version>
                    <executions>
                        <execution>
                            <id>add-source</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>add-test-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>src/it/java</source>
                                </sources>
                            </configuration>
                        </execution>
                        <execution>
                            <id>add-resource</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>add-test-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                             <directory>src/it/resources</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.19.1</version>
                    <configuration>
                        <includes>
                            <include>**/*IT.java</include>
                        </includes>
                    </configuration>
                        <execution>
                            <goals>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

person Kgn    schedule 27.10.2016    source источник


Ответы (1)


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

Согласно предложению @Tunaki и моим исследованиям, я не верю, что у вас есть простой способ maven-failsafe-plugin инициировать процесс запуска сервера без настройки/разветвления самого отказоустойчивого кода плагина (что я бы не рекомендовал).

Возможно, лучшим вариантом будет сделать что-то вроде того, что я делаю для службы, встроенной в postgres: создать новый, довольно простой плагин для инициализации службы netty. Обратитесь к выбранному @Tunaki ответ.

Основываясь на совете @Tunaki и следуя этому довольно простому Руководство по maven-plugin Я создал небольшой проект Java (Maven-plugin), который состоит из:

  • плагин pom (с использованием плагина сборки maven-plugin-plugin 3.4)
  • Мой класс службы Java, содержащий код для инициации, поддержания состояния серверного процесса и остановки серверного процесса.
  • Два Mojo (классы Java) для моего процесса запуска и один для моего процесса остановки, которые, в частности, аннотированы следующим образом:

    @Mojo (name = "startpostgres", defaultPhase = LifecyclePhase.PRE_INTEGRATION_TEST) открытый класс StartPostgresMojo расширяет AbstractMojo

Мой плагин pom начинается так:

<groupId>my.group.id</groupId>
<artifactId>postgres-maven-plugin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
  <plugin>
    <artifactId>maven-plugin-plugin</artifactId>
    <version>3.4</version>
  </plugin>
</plugins>
</build> 

Похоже, сделать что-то подобное с вашим сервером приложений netty может вам помочь.

Еще одна вещь, которую вы могли бы сделать, это разветвить плагин maven Cargo и попробуйте добавить свою собственную поддержку сервера приложений netty, так как это не из текущих поддерживаемых контейнеров для грузов

person aramcodez    schedule 27.10.2016