簡體   English   中英

如何在Maven-Failsafe-plugin中添加集成前和集成后階段

[英]how to add pre and post integration phase to maven-failsafe-plugin

我有一個網狀的應用服務器需要在預集成測試階段要啟動並在后的整合測試階段 IntegrationTests的測試目的停止它。 我曾經使用過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>

有趣的問題,因為它與我最近關於使用嵌入式postgres實例執行相同操作的問題類似。

根據@Tunaki對我的建議,以及根據我的研究,我認為沒有一種簡單的方法可以讓maven-failsafe-plugin啟動服務器啟動過程而無需自定義/分叉故障安全插件代碼本身(我會不推薦)。

也許更好的選擇是按照我為postgres嵌入的服務需求做某件事:創建一個新的,相當簡單的插件來初始化netty服務。 請參閱@Tunaki的選定響應

根據@Tunaki的建議,並按照此易於遵循的Maven插件指南,我創建了一個小型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應用服務器執行類似的操作可以為您工作。

您可能能夠做的另一件事是派生Maven貨運插件,並嘗試添加對Netty應用服務器的支持,因為這不是當前受支持的貨運容器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM