2016-07-01 8 views
0

私はMavenのビルドとJbossのEARの展開プロセスを自動化しようとしています。私は以下のようなバットファイルを書きました。ここでJboss 7のEARバットファイルの自動展開

ECHO OFF 
    RMDIR /S /Q .\deploy 
    call mvn clean install -D build=P,JB 
    call mvn clean install -D build=F,JB 
    @echo | call C:\Work\jboss-as-7.1.1.Final\bin\jboss-cli.bat --connect --controller=[my-machine-name]:9999 command=:shutdown 
    del /q C:\Work\jboss-as-7.1.1.Final\standalone\deployments\*.* 
    xcopy /s /y .\deploy\function\Jboss\*.ear C:\Work\jboss-as-7.1.1.Final\standalone\deployments 
    xcopy /s /y .\deploy\WorkFlowEngine\Jboss\*.ear C:\Work\jboss-as-7.1.1.Final\standalone\deployments 
    cd C:\Work\jboss-as-7.1.1.Final\bin 
    rmdir "C:\work\jboss-as-7.1.1.Final\standalone\data" /s /q 
    rmdir "C:\work\jboss-as-7.1.1.Final\standalone\log" /s /q 
    rmdir "C:\work\jboss-as-7.1.1.Final\standalone\tmp" /s /q 
    standalone.bat -bmanagement [my-machine-name] -b [my-machine-name] -c standalone-full-ha.xml 
     {code for check of deployment success/failure} 
    PAUSE 

あなたは私が

standalone.bat -bmanagement sbstjwsvm1509 -b sbstjwsvm1509 -c standalone-full-ha.xml 

私の要件は、EARが、私はあると思った私のバットfile.Oneの途中から正常に展開された場合、私は確認したいということであるラインを使用していていることがわかります.deplyedを確認するためにまたは.failedJbossデプロイメントフォルダ内の拡張ファイル。同じコードを書き込もうとしましたが、上記の行の下に書かれているコードは実行されていません。私はこれを達成することができますか?なぜ私のコードは実行されない展開をチェックするのですか?

答えて

1

standalone.batはバックグラウンドで実行されていないので、JBossインスタンスを強制終了または停止するまで(ctrl + Cシグナルまたはjboss CLIでシャットダウンするまで)JBossインスタンスが実行されるためです。あなたが達成したい事例と詳細については、this answerを参照してください。

あなたはmavenを使用しているので、jboss-as-maven-pluginを使用することをお勧めします。 アプリケーションを見たり、アンデプロイしたり、リソースを解放したり、サーバーを起動/停止するコマンドがあります。

その後、プラグインの実行を統合して、クリーンフェーズで停止/クリーンアップし、目標を使用してインストール/フェーズを展開することができます。複雑な例を参照してください。

0

ここに私の解決策を投稿する考え。

ECHO OFF 
SET "JBOSS_DIR=C:\Work\jboss-as-7.1.1.Final" 
SET "deployedAPP=MyApp.ear" 
RMDIR /S /Q .\deploy 
call mvn clean install -D build=P,JB 
call mvn clean install -D build=F,JB 
@echo | call %JBOSS_DIR%\bin\jboss-cli.bat --connect --controller=[mymachine_name]:9999 command=:shutdown 
del /q %JBOSS_DIR%\standalone\deployments\*.* 
xcopy /s /y .\deploy\function\Jboss\*.ear %JBOSS_DIR%\standalone\deployments 
xcopy /s /y .\deploy\WorkFlowEngine\Jboss\*.ear %JBOSS_DIR%\standalone\deployments 
cd %JBOSS_DIR%\bin 
PING -n 61 -w 1 localhost >nul 
START CMD /C CALL MyJboss.bat 
SET count=0 
:checkIfDeployed 
    if exist "%JBOSS_DIR%\standalone\deployments\%deployedAPP%.deployed" (
     GOTO appDeployed 
    ) 
    if exist "%JBOSS_DIR%\standalone\deployments\%deployedAPP%.failed" (
     GOTO deployFailed 
    ) 
    PING -n 6 -w 1 localhost >nul 
     GOTO checkIfDeployed 
:appDeployed 
    PAUSE 
    EXIT 
:deployFailed 
    SET /A count+=1 
    if %count% == 5 (goto end) 
    @echo | call %JBOSS_DIR%\bin\jboss-cli.bat --connect --controller=[mymachine_name]:9999 command=:shutdown 
    PING -n 61 -w 1 localhost >nul 
    START CMD /C CALL MyJboss.bat 
    GOTO checkIfDeployed 
:end 
    PAUSE 

は下記からすべての私のコードが実行されますwindow.Now別のCMDでJBossを起動するためにライン

START CMD /C CALL MyJboss.bat 

を使用します。