Mavenへのはじめの一歩
Upcoming SlideShare
Loading in...5
×
 

Mavenへのはじめの一歩

on

  • 1,066 views

Apache Mavenについて。

Apache Mavenについて。
社内勉強会用に作成した資料です。

Statistics

Views

Total Views
1,066
Views on SlideShare
1,066
Embed Views
0

Actions

Likes
4
Downloads
6
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Mavenへのはじめの一歩 Mavenへのはじめの一歩 Presentation Transcript

    • 社内勉強会資料へのはじめの一歩OhnoYuri13年6月3日月曜日
    • あなたの身の回りで起きていることアプリケーションの動かし方(コンパイル、テスト、実行)が作った人にしかわからない関連するライブラリがたくさんあり、良くわからないっ!手順書がないっ!!Apache Mavenでビルドの見通しを良くしよう13年6月3日月曜日
    • Javaのビルドツールの移り変わりAPACHE MAVENで誰でも達人・コマンドラインからコンパイルし、実行する・-classpathで外部jarやクラスを含める・build.xmlにビルド方法を記述する・必要なライブラリについていっしょに配布する・pom.xmlより依存するライブラリを記述する・必要なライブラリはインターネット越しに取得される$ javac Hello.java$ java Hello手順書による「一子相伝」属人化の排除 ライブラリ依存関係の自動解決めいゔぃん (達人という意味)13年6月3日月曜日
    • Mavenが現れた背景JakartaTurbinプロジェクトにおいて、関連するライブラリやbuild.xmlの管理が煩雑になったため。Mavenの一連のライフサイクルフェーズ(いくつかのゴールをまとめた単位)でビルドを実行•plugin ; Mavenの機能をインストール•dependency ; プロジェクトに必要なライブラリをインストールAPACHE MAVANについてローカルリポジトリcompile, test, packageを経てできたjarをインストールセントラルリポジトリ,サードパーティリポジトリ関連するjarをインストールinstall = compile + test + package + ローカルリポジトリにデプロイinstall = compile + test + package + ローカルリポジトリにデプロイinstallpackagetestcompilecleaninstall = compile + test + package + ローカルレポジトリにデプロイpackage = compile + test + パッケージングtest = compile + 単体試験の実行compile = コンパイル13年6月3日月曜日
    • HELLO MAVEN$ mvn --versionUnable to find a $JAVA_HOME at "/usr", continuing with system-provided Java...Apache Maven 3.0.5(省略)$ echo “export JAVA_HOME=/pass/to/your/JAVA_HOME >> ~/.bashrc$ source ~/.bashrc$ echo $JAVA_HOME$ mvn archetype:generate ¥-DgroupId=com.mycompany.app ¥-DartifactId=FirstApp ¥-Dversion=1.0.0-SNAPSHOT ¥-DarchetypeArtifactId=maven-archetype-quickstart ¥-DinteractiveMode=falseプロジェクトを作った組織を識別するIDプロジェクト名プロジェクトのバージョン名プロジェクトのひな形タイプ対話的にプロジェクトをつくらない1. Mavenがインストールされていることを確認する2. Mavenで新規プロジェクトを作成する13年6月3日月曜日
    • ディレクトリ構成ディレクトリ構成を確認するプロパティファイルのディレクトリとして、main/resourcesおよびtest/resourcesを追加するFirstApp├── pom.xml ビルド時の依存関係や生成した成果物の扱いなどを記載└── src├── main ソースコードを格納するターゲットディレクトリ│ └── java│ └── com パッケージ空間│ └── mycompany│ └── app│ └── App.java└── test テストコードを格納するターゲットディレクトリ└── java└── com└── mycompany└── app└── AppTest.java13年6月3日月曜日
    • パッキングしてみようパッケージしてみるmvn packageでコンパイル、テスト、パッケージといった一連のプロセスが実行される$ cd FirstApp$ mvn clean package…(省略)…-------------------------------------------------------T E ST S-------------------------------------------------------Running com.mycompany.app.AppTestTests run: 1, Failures: 0, Errors: 0, Skipped: 0,Time elapsed: 0.015 secResults :Tests run: 1, Failures: 0, Errors: 0, Skipped: 0[INFO][INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ FirstApp ---[INFO] Building jar: /Users/hermesian/dev/java/FirstApp/target/FirstApp-1.0.0-SNAPSHOT.jar[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO]Total time: 4.248s[INFO] Finished at:Wed May 01 13:48:59 JST 2013[INFO] Final Memory: 18M/140M[INFO] ------------------------------------------------------------------------13年6月3日月曜日
    • ECLIPSEプロジェクトにしてみよう$ ls - l FirstApp/targettotal 8-rw-r--r-- 1 hermesian staff 2304 5 1 13:48 FirstApp-1.0.0-SNAPSHOT.jardrwxr-xr-x 3 hermesian staff 102 5 1 13:48 classesdrwxr-xr-x 3 hermesian staff 102 5 1 13:48 maven-archiverdrwxr-xr-x 2 hermesian staff 68 5 1 13:48 surefiredrwxr-xr-x 4 hermesian staff 136 5 1 13:48 surefire-reportsdrwxr-xr-x 3 hermesian staff 102 5 1 13:48 test-classes$ cd FirstApp/target$ java -cp target/FirstApp-1.0.0-SNAPSHOT.jar com.mycompany.app.AppHello World!$ cd FirstApp$ mvn eclipse:eclipse4. 作成したプロジェクトをEclipseプロジェクにする•これにより.classpathや.projectが作成されるので、Eclipseから既存Mavenプロジェクトとしてインポートすれば良い3. パッケージしたjarの動作を確認する13年6月3日月曜日
    • MAVENから実行してみよう5. mainメソッドが記載されているクラスを-Dexec.mainClassで指定する$ mvn clena compile exec:java -Dexec.mainClass=com.mycompany.app.App[INFO] Scanning for projects......(省略)...Hello World![INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO]Total time: 1.254s[INFO] Finished at: Sat May 18 15:39:01 JST 2013[INFO] Final Memory: 5M/81M[INFO] ------------------------------------------------------------------------6. 毎回引数で面倒なのでpom.xmlで設定する• MavenにExec Mavenプラグインを追加し、実行する•Exec Maven Plugin : http://mojo.codehaus.org/exec-maven-plugin/13年6月3日月曜日
    • <build><plugins><plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>com.mycompany.app.App</mainClass> </configuration></plugin></plugins>$ mvn exec:java(結果は先ほどと同様なので省略)• pom.xmlに以下を追記する• exec:javaで実行できるゴールとしてexec:javaを使用mainメソッドのあるクラスを指定13年6月3日月曜日
    • 今度はWEBアプリケーション7. archetypeArtifactIdとして、maven-archetype-webappを指定する$ echo “export JAVA_HOME=/pass/to/your/JAVA_HOME >> ~/.bashrc$ source ~/.bashrc$ echo $JAVA_HOME$ mvn archetype:generate ¥-DgroupId=com.mycompany.app ¥-DartifactId=FirstWebApp ¥-Dversion=1.0.0-SNAPSHOT ¥-DarchetypeArtifactId=maven-archetype-webapp ¥-DinteractiveMode=falsearchetypeArtifactIdを指定8. できたプロジェクトのディレクトリ構成を確認しよう足りないディレクトリは足すこと(src/main/java, src/test/java, src/test/resourcesFirstWebApp├── pom.xml└── src└── main├── resources└── webapp├── WEB-INF│   └── web.xml└── index.jsp13年6月3日月曜日
    • APACHETOMCATの管理者を設定する9.ApacheTomcat Maven Pluginを使って、Mavenにwarファイルをデプロイする<tomcat-users><role rolename=”manager-gui”/><role rolename=”manager-script”/><user username=”admin” password=”admin00” roles=”manager-gui,manager-script”/></tomcat-users>adminというユーザを作る•Tomcat7 (今回は7.0.40を使用)で管理ユーザを作る$CATALINA_HOME/conf/tomcat-user.xml•Tomcatを再起動し、管理ページに入れることを確認するブラウザからhttp://localhost:8080/managerに接続する13年6月3日月曜日
    • APACHETOMCATにデプロイする10. Mavenの設定(settings.xml)にTomcatの管理者の設定を追記する<settings><servers><server><id>tomcat7</id><username>admin</username><password>admin00</password></server></servers></settings>“tomcat7”という識別子を設定~/.m2/settings.xml11. pom.xmlにTomcatへのダプロイを設定する<build><finalName>FirstWebApp</finalName><plugins><plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> <configuration> <server>tomcat7</server> <url>http://localhost:8080/manager/text</url> <path>/${project.build.finalName}</path> <update>true</update> </configuration></plugin></plugins></build>“tomcat7”という識別子を設定デプロイは/manager/text/deploy?path=/FirstWebAppで指定.warの名前を指定(上部の<finalName>で指定されている)<update>で更新を指定していないと再度デプロイできない13年6月3日月曜日
    • デプロイされていることを確認しよう12. MavenからTomcatにデプロイする$ mvn tomcat7:deploy...(省略)...[INFO] tomcatManager status code:200, ReasonPhrase:OK[INFO] OK - コン????ストパス /FirstWebApp でアプリケーションを??備しました[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO]Total time: 4.130s[INFO] Finished at: Sun May 19 20:17:57 JST 2013[INFO] Final Memory: 9M/81M[INFO] ------------------------------------------------------------------------Tomcatに配備完了(文字化けしちゃってる...)13.デプロイされていることを確認しようブラウザからhttp://localhost:8080/managerに接続するFin.13年6月3日月曜日