【问题标题】:how to add pre and post integration phase to maven-failsafe-plugin如何将集成前和集成后阶段添加到 maven-failsafe-plugin
【发布时间】:2017-03-10 00:18:17
【问题描述】:

我有一个 netty 应用程序服务器需要在 pre-integration-test 阶段启动并在 post-integration-test 阶段停止它以进行测试集成测试的目的。我用过maven-failsafe-plugin。但我不知道在预集成测试阶段执行主类以及执行后如何停止服务器。我的主类也位于项目的子模块中。我已经创建了一个用于在父 pom 中运行 IntegrationTest 的配置文件。

     <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>

【问题讨论】:

    标签: java maven integration-testing pom.xml maven-failsafe-plugin


    【解决方案1】:

    有趣的问题,因为它类似于我最近关于使用embedded postgres instance 做同样事情的问题。

    根据@Tunaki 对我的建议,根据我的研究,我认为没有一种简单的方法可以让maven-failsafe-plugin 启动服务器启动过程,而无需自定义/分叉故障安全插件代码本身(我不推荐)。

    也许更好的选择是像我为我的 postgres 嵌入式服务需求所做的那样:创建一个新的、相当简单的插件来初始化 netty 服务。参考@Tunaki 选择的response

    根据@Tunaki 的建议并遵循这个相当容易遵循的maven-plugin 指南,我创建了一个小型 Java(Maven 插件)项目,其中包括:

    • 插件 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 应用服务器做这样的事情对你有用。

    您可以做的另一件事是 fork maven cargo plugin 并尝试添加您自己对 netty 应用服务器的支持,因为那是 不是当前支持的货物集装箱

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 2012-08-30
      • 2013-05-23
      • 1970-01-01
      相关资源
      最近更新 更多