2

我有一個netty應用程序服務器需要在預集成測試階段開始,並在集成後測試階段停止它用於IntegrationTests的測試目的。我曾使用maven-failsafe-plugin。但是我不知道在預集成測試階段執行主類,以及執行後如何停止服務器。此外,我的主要課程駐留在項目的子模塊中。我創建了一個用於在父pom中運行IntegrationTest的配置文件。如何將前後集成階段添加到maven-failsafe插件

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

回答

0

有趣的問題,因爲它類似於我最近講的是一個embedded postgres instance做同樣的事情的問題。

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

也許更好的選擇是做一些像我爲我的postgres嵌入式服務需要做的事情:創建一個新的,相當簡單的插件來初始化netty服務。請參閱@ Tunaki所選的response

基於@Tunaki建議並且在這之後很容易遵循的指導maven-plugin我已經創建了一個包含一個小的Java(Maven的插件)項目:

  • 插件POM(使用maven- plugin-plugin 3.4 build plugin)
  • 我的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> 

這聽起來像做一些LIK這與您的netty應用程序服務器可以爲你工作。

你也許能夠做的另一件事是用叉子叉maven cargo plugin並嘗試添加爲網狀應用服務器自己的支持,因爲這是不是當前支持的容器貨物

相關問題