2016-08-18 58 views
0

情景是这样的。我们的项目由多个模块组成,其中一个特定模块的目的是在构建下一个模块之前的一段时间内停止maven的执行。通过在java应用程序中运行exec-maven-plugin,调用System.setProperty,睡眠时间被定义为前一个模块中的JVM属性。如何让Maven执行睡眠

我最初的想法是运行java程序,在本模块中调用Thread.sleep,但它似乎不影响Maven执行。我猜exec-maven-plugin在单独的线程中运行程序。

如何在一段时间内停止Maven执行,这是作为JVM参数提供的?

+0

这很丑陋,但你可以在单元测试中包含一个''Thread.sleep''。我再说一遍:这很丑陋。我不会这样做。 – f1sh

+0

'exec:exec'在一个分离的进程中执行,而'exec:java'在同一个JVM中,你使用'exec-maven-plugin'的目标是什么? –

+0

我使用的是exec:java –

回答

0

这里是我找到了解决办法:

代替Java类的,我用Maven的antrun-插件停止内部模块

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <version>1.8</version> 
       <executions> 
        <execution> 
         <id>wait</id> 
         <phase>integration-test</phase> 
         <configuration> 
          <target> 
           <sleep seconds="${duration}" /> 
          </target> 
         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

这里执行的是原来的线程 Is there any maven sleep functionality?