Webアプリを作成していて、現在時間を変更しないといけないケースというのがあります。ローカル環境で開発してると時間を変更すると色々問題なので、Vagrantを使うと便利です。
ローカルのpom.xmlを以下のようにしてビルドするときにrootディレクトリ以下にWEB-INFとかができるようにします
<build> <finalName>root</finalName> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <includes> <include>**/*Tests.java</include> </includes> </configuration> </plugin> </plugins> </build>
最初にVagrantからアプリに参照できるようにします。Vagrantfileに下記を追加すると、Vagrantから参照できます。便利。
config.vm.synced_folder "<ローカルパス>", "/vagrant_data"
Vagrantに入れるJetty(ゲストJetty)のwebappsにシンボリックリンクを作成
ln -s /vagrant_data/target/root $jetty.home/webapps/root
リモートデバッグできるようにVagrant に入れたJettyのstart.iniにこれを追加
--module=jmx --exec -Xdebug -agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=n -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -DOPTIONS=jmx
あと、hostname -i コマンドを実行した時に、127.0.0.1と表示されるとJMXがうまくいかないらしいので、/etc/hostsを変更
#127.0.0.1 CentOS CentOS localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.33.10 CentOS CentOS localhost localhost.localdomain localhost4 localhost4.localdomain4
この時点でVagrant上のjettyを立ち上げて、http://
次にIntelliJ IDEAのRun/Debug Configurationsから[Jetty Server] → [Remote]を選択します。言葉で書くよりも画像を見てもらったほうが早いので、キャプチャをペタリ。ちなみに192.168.33.10はVagrant側のIPです
これで多分大丈夫。pom.xmlのfinalNameを変更せずにhttp://