第一回チキチキ(略)Maven2(ry で喋って来た。
飲み会のjava-jaには一度参加したことがあったが、勉強会としてのjava-jaには初参加。EclipsePlugin開発勉強会(eclipSKY)に引き続き、初参加でスピーカーをするライフハック発動。
いやーーーー。eclipSKYの時はふつーに話せたのだが、今回は何だろうなぁ、緊張スイッチが切れなかった。話し始めればいつも余裕になるのにw 声が震えてドモドモになってもたorz アムロみたいって言われた(笑) ネタを仕込んだから「雪崩れたらどうしよう」の緊張だったと思われるw
しかしまぁ、仕込んだ点ではしっかり笑いがとれたので良しとする。というわけで、スライド公開します。フォントのレイアウトが崩れてしまっているけど、面倒なのでスルー。
他のセッション&懇親会以降のお話は、また別のエントリーで。
UStreamの録画は、以下からどうぞ(5'48" - 41'20" : 35分間ちょい)。
http://www.ustream.tv/recorded/Z9U.1K5WcsMTveiN46ElyA
以下、行ったデモの手順。この通りに行っていけば、デモを再現できるハズ。
Demo1
プロジェクト雛形を作ってpackageして実行するだけの簡単なお仕事です。
雛形にHello, world!が含まれているので、更に楽。
d: mkdir d:\workspace cd d:\workspace mvn archetype:create -DgroupId=com.example -DartifactId=javaja-ex1 -DarchetypeArtifactId=maven-archetype-quickstart cd javaja-ex1 mvn package java -cp target/javaja-ex1-1.0-SNAPSHOT.jar com.example.App
「Hello World!」と表示されて喜ぶ。
Demo2
Demo1に対して修正を加えていきます。
d:\workspace\javaja-ex1\src\main\java\com\example\App.java を以下のように修正する。
package com.example; import org.apache.commons.lang.WordUtils; public class App { public static void main(String[] args) { System.out.println( WordUtils.swapCase(“Hello, Java-ja!”)); } }
pomに依存関係を書かないままコンパイルして、失敗してみる。
mvn clean mvn compile
失敗を確認したら、pomにdependencyの記述をして、packageしてみる。
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.3</version> </dependency>
mvn clean mvn package
次に、セッションでは説明しなかったが、ここで dependency:copy-dependencies というゴールを実行している。dependencyに記述した全ての依存JAR(ここではcommons-langのみ)を、target/dependency/ にコピーしてくる、というゴールです。
それを行った上で、成果物を実行してみる。
mvn dependency:copy-dependencies java -cp target/javaja-ex1-1.0-SNAPSHOT.jar;target/dependency/commons-lang-2.3.jar com.example.App
「hELLO, jAVA-JA!」と表示されて喜ぶ。
Demo3
cd d:\workspace mvn archetype:create -DgroupId=com.example -DartifactId=javaja-ex3 -DarchetypeArtifactId=maven-archetype-webapp
pom.xmlに、tomcatプラグインが存在するリポジトリを指定する。
<project …> <pluginRepositories> <pluginRepository> <releases><enabled>false</enabled></releases> <snapshots /> <id>Maven Snapshots</id> <url>http://snapshots.repository.codehaus.org/</url> </pluginRepository> </pluginRepositories> </project>
<project …> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.0-SNAPSHOT</version> <configuration> <server>localhost-tomcat</server> <url>http://localhost:8080/manager</url> <path>/javaja-ex3</path> </configuration> </plugin> </plugins> </build> </project>
上で指定した「localhost-tomcat」についての情報をsettings.xml に、記述する。
<setting> <servers> <server> <id>localhost-tomcat</id> <username>admin</username> <password>admin</password> </server> </servers> </setting>
Tomcatを起動した上で、デプロイしてみる。
mvn tomcat:deploy
ブラウザでHello, world!を確認して喜ぶ。 → http://localhost:8080/javaja-ex3/
続いて、d:\workspace\javaja-ex3\src\main\webapp\index.jsp に、適当なJSPを記述する。ここでは、現在時刻を表示するコード。
<html> <body> <h2>Hello World!</h2> <% java.util.Date nowTime = new java.util.Date(); %> current time = <b><%= nowTime %></b> </body> </html>
これを再びデプロイしてみる。(undeployしてからdeploy)
mvn tomcat:undeploy mvn tomcat:deploy
ちなみに、mavenでは複数のゴールを指定できるので、実は「mvn tomcat:undeploy tomcat:deploy」でもよい。
ブラウザで現在時刻を確認して喜ぶ。 → http://localhost:8080/javaja-ex3/