如何从Gradle正确启动Wildfly

时间:2015-11-26 14:01:13

标签: java selenium groovy gradle wildfly

我的目标是开发一个Gradle脚本,在测试开始运行之前启动我的Wildfly,并在测试完成后停止它,这样,Selenium测试就可以运行。

为了实现这一目标,我决定在我的build.gradle

中执行以下操作

在测试之前(test.doFirst)

  1. 检查JBOSS_HOME环境变量是否存在;
  2. 如果存在,我运行以下命令启动我的Wildfly:

    ext.jbossHome = System.getenv('JBOSS_HOME')
    ext.isWildflyAvailable = (jbossHome != null)
    
    task startWildfly(type:Exec) {
        if (!isWildflyAvailable) {
            return;
        }
    
        println 'Starting Wildfly...'
        println 'JBOSS_HOME: ' + jbossHome
    
        workingDir = file(jbossHome + '\\bin')
        commandLine = ['cmd', '/C', 'standalone.bat']
    }
    
    test.doFirst {
        startWildfly.execute()
    }
    
    // Ommited logic for stopping Wildfly
    
  3. 我的Wildfly开始,因为我可以读取登录控制台上的日志,但在它启动后,Gradle坚持使用它,并且永远不会继续进行其余的构建。

    为了避免这种情况,我在命令行的末尾附加了一个&,就像我在控制台上手动启动服务器一样,但Gradle在两次尝试中都开始引发错误:< / p>

    commandLine = ['cmd', '/C', 'standalone.bat &']
    commandLine = ['cmd', '/C', 'standalone.bat', '&&']
    

    经过一些谷歌搜索,我发现了一些关于在不同的线程上运行commandLine的事情,但是,我将失去对该过程的跟踪,并且无法知道我的Wildfly何时开始。

    还有其他选择吗?

0 个答案:

没有答案