Gitbucketを自前サーバで使ってるけども、、 コマンドプロンプトで「java -jar ~~」って実行するのでプロンプトが出るのがかっこ悪い。 あと、再起動とかした時に勝手にやってほしい。
スタートアップとかタスクでどうこうできそうだけども、せっかくなのでWindowsサービスを作る。
Windowsサービスを作る手順はこのサイトで。
作ったら、ソースを下の感じにする。
System.Diagnostics.Process p=null; public void CallGitbucket() { p = new System.Diagnostics.Process(); //javaの実行ファイル string javaexe = System.IO.Path.Combine(@"C:\ProgramData\Oracle\Java\javapath","java.exe"); p.StartInfo.FileName = javaexe; //実行引数 p.StartInfo.Arguments = @" -jar gitbucket.war --port=8890 "; //もろもろフラグ p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = false; p.StartInfo.RedirectStandardInput = false; //ウィンドウを表示しないようにする p.StartInfo.CreateNoWindow = true; //起動 p.Start(); } //サービス開始時 protected override void OnStart(string[] args) { CallGitbucket(); } //サービス停止時 protected override void OnStop() { if(p != null) { p.Kill(); p.Close(); p.Dispose(); p = null; } }
無理やり。止めるときの書き方を調べずにとりあえず書いたので 合ってるかは不明。絶対違うと思う。おいおい調べる。
まーでもとりあえず動いてるみたいよ。
ついでに、作ったサービスのExeの登録に参考サイトは「installutil」使ってるけど、VisualStudioのコンソール上でやるかSDKのフォルダにパス通しておかないと普通には使えない。登録するだけなら、↓のコマンドで行ける。
sc create service_name binPath= "*********\WindowsService1.exe"
--2016/4/6追記
start 使えばコマンドだけでもバックグラウンドに回せるかと思ってたけど、
試してみたら、Javaのコンソールが上がってしまった。ダメじゃん。
んーやっぱサービスにするプログラム作らないといい感じにはならないかな。
試したのは↓のコマンド。
start java -jar gitbucket.war --port=8008 --gitbucket.home=*********