2016-08-23 127 views
0

如何使用以前發佈到maven回購站的gradle將戰爭部署到其中一個Web服務器上? Gradle的貨物插件是否有利於它?我可以有多個遠程環境(DEV/TEST/PROD)嗎?我一直在使用貨物進行遠程部署,但是這些工作始終是在生成戰爭結束時完成的,並且只能在一個「遠程」環境中進行。從回購部署戰爭到遠程服務器

任何輸入都會有幫助。

回答

0

我認爲這段代碼會幫助你。在創建的gradle任務runDeployment和運行任務:

task runDeployment { 
    description 'deploy the war to the server' 

    doLast { 
     String serverIP; 
     String serverPort; 
     String userName; 
     String password; 
     String jbossPath; 
     Properties prop = new Properties(); 
     InputStream input; 


     try { 
      input = new FileInputStream("deployment.properties"); 
      // load a properties file 
      prop.load(input); 
      // get the property value setting in the variables. 
      serverIP = prop.getProperty("serverIP"); 
      serverPort = prop.getProperty("serverPort"); 
      userName = prop.getProperty("userName"); 
      password = prop.getProperty("password"); 
      jbossPath = prop.getProperty("jbossPath"); 
     } catch (IOException ex) { 
      logger.info(ex.printStackTrace()) 
      throw new GradleException("Unable to load deployment.properties file. Exiting....") 
     } finally { 
      if (input != null) { 
       try { 
        input.close(); 
       } catch (IOException e) { 

       } 
      } 
     } 



      File file = new File("xyz/build/libs"); //path of the war location 
      String warPath = file.getAbsolutePath(); 

      String[] comm = [jbossPath+"jboss-cli.bat","--connect","controller="+serverIP+":"+serverPort,"-u="+userName,"-p="+password, "--command=\"deploy","--force","xyz.war"]; 
      ProcessBuilder pb = new ProcessBuilder(); 
      pb.command(comm); 
      pb.directory(new File(warPath)); 
      pb.inheritIO();  
      Process p = pb.start(); 
      try { 
       p.waitFor(); 
      } 
      catch (InterruptedException e) { 
       logger.info(e.printStackTrace()); 
      } 
     }  
    } 

在這裏,我嘗試部署xyz.war到JBoss服務器。 我在deployments.properties文件中保留服務器和身份驗證。 我們將獲得warPath,並在此代碼中運行CLI命令。這將使用serverIP和serverPort將戰爭部署到遠程服務器。

此代碼適用於我。