Java/Maven
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-antに変わるビルドツールとして急成長中。とはいってもantも...
#contents
*基本概念 [#j27ab3dc]
プロジェクトで必要となるタスクをMavenが定義する各フェーズ...
各フェーズはmavenプラグインで実装されており、初回実行時に...
|プロジェクト作成|mvn archetype:create|
|クリーン|mvn clean|
|コンパイル|mvn compile|
|クラスを指定して実行|mvn exec:java -Dexec.mainClass=ク...
|依存jarをtarget/dependencyにコピー|mvn dependency:copy-d...
-JRE1.6以上から、ワイルドカードが使えるようになった。
java -cp 'target/dependency/*.jar' hogehoge
**構成 [#m766f357]
親pom.xmlのDependencyManagementセクションにて、各サブモジ...
***pomが競合したとき [#sfae5048]
複数の親pomが混在する場合は、一番近い依存性定義が優先され...
以下のプロジェクトではD1.0が利用される。
|A-B-C-D2.0|4階層下にある|
|A-E-D1.0|3階層下にある。こちらのほうが近い|
*jarの中に依存ライブラリ [#a9f7aa68]
maven-shade-plugin
*インストール [#m2e6660d]
Javaとmvnへのパスが通っていればよし。Eclipseならm2e(昔のm...
**MavenのバージョンとJDKのバージョン対応表 [#nb34a01b]
|maven|JDK|
|3.3|1.7以上|
|3.2|1.6以上|
|3.1|1.5以上|
|2.2.1|1.5以上|
|2.1.0|1.4以上|
*プロジェクトの生成 [#wc7483fe]
-テンプレートに合わせてディレクトリを作ってくれる。以下の...
mvn archetype:generate
**Webプロジェクトのときの依存性 [#q3c8d095]
-servletapi 3.1
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
-JSTL1.2
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
</exclusion>
</exclusions>
</dependency>
*pom.xmlの記載 [#b63e739e]
**基本情報 [#z8728243]
**変数の定義と利用 [#uab16306]
<properties>
<arbitrary.property.a>This is some text</arbitrar...
<hibernate.version>3.3.0.ga</hibernate.version>
</properties>
...
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>${hibernate.version}</version>
-settings.xmlにpropeties定義できるところがあって、別ファ...
**profileの指定 [#i0d5434b]
mvn help:active-profilesで現状有効なprofileを見ることがで...
<profile>
<id>profile-A</id>
<properties>
<value>AAA</value>
</properties>
</profile>
<profile>
<id>profile-B</id>
<properties>
<value>BBB</value>
</properties>
</profile>
**リポジトリ情報 [#u81855ac]
-関連モジュールをローカルリポジトリにダウンロードさせる
$ mvn dependency:go-offline
3種類定義する。
+ダウンロードリポジトリ
+パッケージを作成したときにアップロードするリポジトリ
+プラグインのダウンロードリポジトリ
三種類なので一か所だけ変更しても、残りは変更されておらず...
***依存関係jar表示 [#ic27e4d5]
mvn dependency:tree
-Dverboseオプションを付けるとより詳細な情報を表示できる。
**リポジトリごとのTimeout [#ze91b2bb]
-settings.xmlで行う。
**リポジトリポリシー [#na6cd37a]
-pom.xmlの定義部分で行う。uniqueVersion=trueに指定すると...
<!-- distributionManagementはアップロード先のリポジトリ...
<distributionManagement>
<repository>
<uniqueVersion>true</uniqueVersion>
<id>release_repo</id>
<name>release_repository</name>
<url>http://example.com/maven/release</url>
</repository>
<snapshotRepository>
<uniqueVersion>false</uniqueVersion>
<id>snapshot_repo</id>
<name>snapshot_repository</name>
<url>http://example.com/maven/snapshot</url>
</snapshotRepository>
</distributionManagement>
**ローカルリポジトリ [#d6de3abc]
デフォルトはユーザーの.m2だが、settings.xmlで設定可能
<localRepository>/path/to/local/repo</localRepository>
**Eclipse上での操作 [#t584a242]
***既存プロジェクトをmavenプロジェクトに変更 [#g652987d]
右クリックして構成→convert to maven project
***新規作成 [#i689ee35]
右クリックして新規作成→Maven→Maven Project
*プラグイン [#n4c77927]
**maven-release-plugin [#bf1d00ee]
pomのバージョンアップやタグの設定を自動でやってくれるプラ...
http://www.nulab.co.jp/kousei/chapter6/05.html
-pluginを取ってくるrepositoryはplugin-repositoryとして別...
|wagon|ファイル転送プラグイン|
|release|リリース作業用プラグイン|
|resource|リソースファイルコピーや文字列置換|
|exec|コマンド実行|
|surefire|テスト実施、結果レポート作成|
プラグインリポジトリは以下に設定する。
http://repo1.maven.org/maven2/
*注意点など [#l17c5f17]
特別な設定をしない限り、jarファイルをネット経由で持ってく...
*主要操作など [#l4882bbb]
**プロジェクト作成 [#gec98655]
-下記コマンドでディレクトリ構成含め勝手に作ってくれる
mvn archetype:create -DgroupId=com.rutake.sample -Dartif...
-warなら以下の通り
mvn archetype:generate -DgroupId=com.rutake.sample -Dart...
--pom.xmlには依存関係がないのでServlet系を利用するなら以...
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>
**コンパイル [#b0135ff3]
-テストコンパイルするにはappディレクトリに移動して以下の...
mvn compile
バージョンの指定はプロパティで行う。
maven.compiler.source, maven.compiler.target
**テスト [#gedd4ae5]
-JUnitテストするには
mvn test
-特定のクラスのみテストする
mvn test -Dtest={テストクラス名}
**パッケージ作成 [#nc81a40d]
mvn package
**リリース [#f79b28dc]
-ローカルリポジトリにリリースしてみる
mvn install
どのコマンドも初回実行時には関連jarをごっそりダウンロード...
**リモートリポジトリに配備 [#n41fc747]
-インストール先の情報はdistributionManagementセクションで...
mvn deploy
-手動デプロイ(jarとpom両方実施の必要あり)
mvn deploy:deploy-file -Durl=<アップロード先URL> -Drepos...
-手動デプロイ(pom) -DgeneratePom=falseを入れないと勝手に...
mvn deploy:deploy-file -Dfile=<POMFILE> -Durl=<リポジト...
-CURLでデプロイすることもできるらしい(nexusのHPより)
curl -u juven-test:****** https://oss.sonatype.org/servic...
juvenxu/ossrh-test/1.1/ossrh-test-1.1.pom --request PUT -...
**eclipseプロジェクト作成 [#k4904694]
mvn eclipse:eclipse
**どのprofile,pom,settingsが有効なのか出力 [#he3d7e2b]
mvn help:active-profiles
mvn help:effective-pom
mvn help:effective-settings
settings.xmlは~/.m2におかないと自動では読み込んではくれな...
**リポジトリのタイムアウト設定 [#j18321a6]
http://d.hatena.ne.jp/Kazuhira/20130623/1371978072
*文字列置換 [#xdcc2225]
フィルタリングという。以下のURLを参照せよ
http://www.limy.org/program/java/maven/filtering.html
*TIPS [#u28415a0]
|テストをスキップする|mvnコマンドに、 -Dmaven.test.skip=t...
|メモリの調整|環境変数MAVEN_OPTS=-Xmx512mを設定する。デフ...
*トラブルシューティング [#p0d0c9d3]
|内容|対策|
|Missing artifact||
|jarが古いまま|バージョンが同じだと新しいのを取得しないの...
|resolution will not be reattempted until the update inte...
|リポジトリを変更したのに旧リポジトリを見に行くまたは即タ...
|ソースjarができない|mvn source:jar|
-リポジトリ参照記録は以下のファイルに存在する。
artifact-versionno.pom.lastUpdated
*リポジトリの検索 [#n491dc7a]
http://mvnrepository.com/
*リポジトリソフトウェアの比較 [#q52de179]
+Apache Archiva
+Sonatype nexus
+Artifactory
http://binary-repositories-comparison.github.io/
*用語など [#af2685e7]
|用語名|説明|備考|
|artifactId|成果物のこと|人工物の意味から来ているらしい|
|groupId|パッケージ階層とほぼ同じ||
|プロジェクトサイト|mavenにて自動生成できるHTMLページ|Jav...
|Apache archiva|複数のmavenリポジトリをまとめるProxy的役...
|nexus|archivaと同じく、複数のmavenリポジトリをまとめるPr...
*リポジトリソフト [#c86b3435]
Archiva,sonatype nexus,Artifactoryがある。比較表がある。
http://docs.codehaus.org/display/MAVENUSER/Maven+Reposito...
**nexus(sonatype nexus) [#q4b0395e]
***nexus インストール手順 [#ude664eb]
warバンドルがなくなってしまった。nexusディレクトリ以下をT...
環境変数PLEXUS_NEXUS_WORKでワークディレクトリの設定をする
***設定ファイル [#b5b410dd]
PLEXUS_NEXUS_WORK/confにある。
|security.xml|認証系情報|
|nexus.xml|リポジトリ情報|
***nexusバージョンアップ [#v457d082]
本体だけでOK。
**リポジトリの設定 [#lf83329d]
Proxy,3rdParty,Hosted,Virtualの種類がある。
一般公開されているリポジトリのProxyとして使うならProxyだ...
*モジュールの考え方 [#e40bb458]
http://blog.livedoor.jp/android1009/archives/24341372.html
*トラブルシューティング [#t941083a]
Could not find the main class: org.codehaus.plexus.classw...
M2_HOMEを正しく設定しないと出てしまう。
#counter
終了行:
-antに変わるビルドツールとして急成長中。とはいってもantも...
#contents
*基本概念 [#j27ab3dc]
プロジェクトで必要となるタスクをMavenが定義する各フェーズ...
各フェーズはmavenプラグインで実装されており、初回実行時に...
|プロジェクト作成|mvn archetype:create|
|クリーン|mvn clean|
|コンパイル|mvn compile|
|クラスを指定して実行|mvn exec:java -Dexec.mainClass=ク...
|依存jarをtarget/dependencyにコピー|mvn dependency:copy-d...
-JRE1.6以上から、ワイルドカードが使えるようになった。
java -cp 'target/dependency/*.jar' hogehoge
**構成 [#m766f357]
親pom.xmlのDependencyManagementセクションにて、各サブモジ...
***pomが競合したとき [#sfae5048]
複数の親pomが混在する場合は、一番近い依存性定義が優先され...
以下のプロジェクトではD1.0が利用される。
|A-B-C-D2.0|4階層下にある|
|A-E-D1.0|3階層下にある。こちらのほうが近い|
*jarの中に依存ライブラリ [#a9f7aa68]
maven-shade-plugin
*インストール [#m2e6660d]
Javaとmvnへのパスが通っていればよし。Eclipseならm2e(昔のm...
**MavenのバージョンとJDKのバージョン対応表 [#nb34a01b]
|maven|JDK|
|3.3|1.7以上|
|3.2|1.6以上|
|3.1|1.5以上|
|2.2.1|1.5以上|
|2.1.0|1.4以上|
*プロジェクトの生成 [#wc7483fe]
-テンプレートに合わせてディレクトリを作ってくれる。以下の...
mvn archetype:generate
**Webプロジェクトのときの依存性 [#q3c8d095]
-servletapi 3.1
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
-JSTL1.2
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
</exclusion>
</exclusions>
</dependency>
*pom.xmlの記載 [#b63e739e]
**基本情報 [#z8728243]
**変数の定義と利用 [#uab16306]
<properties>
<arbitrary.property.a>This is some text</arbitrar...
<hibernate.version>3.3.0.ga</hibernate.version>
</properties>
...
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>${hibernate.version}</version>
-settings.xmlにpropeties定義できるところがあって、別ファ...
**profileの指定 [#i0d5434b]
mvn help:active-profilesで現状有効なprofileを見ることがで...
<profile>
<id>profile-A</id>
<properties>
<value>AAA</value>
</properties>
</profile>
<profile>
<id>profile-B</id>
<properties>
<value>BBB</value>
</properties>
</profile>
**リポジトリ情報 [#u81855ac]
-関連モジュールをローカルリポジトリにダウンロードさせる
$ mvn dependency:go-offline
3種類定義する。
+ダウンロードリポジトリ
+パッケージを作成したときにアップロードするリポジトリ
+プラグインのダウンロードリポジトリ
三種類なので一か所だけ変更しても、残りは変更されておらず...
***依存関係jar表示 [#ic27e4d5]
mvn dependency:tree
-Dverboseオプションを付けるとより詳細な情報を表示できる。
**リポジトリごとのTimeout [#ze91b2bb]
-settings.xmlで行う。
**リポジトリポリシー [#na6cd37a]
-pom.xmlの定義部分で行う。uniqueVersion=trueに指定すると...
<!-- distributionManagementはアップロード先のリポジトリ...
<distributionManagement>
<repository>
<uniqueVersion>true</uniqueVersion>
<id>release_repo</id>
<name>release_repository</name>
<url>http://example.com/maven/release</url>
</repository>
<snapshotRepository>
<uniqueVersion>false</uniqueVersion>
<id>snapshot_repo</id>
<name>snapshot_repository</name>
<url>http://example.com/maven/snapshot</url>
</snapshotRepository>
</distributionManagement>
**ローカルリポジトリ [#d6de3abc]
デフォルトはユーザーの.m2だが、settings.xmlで設定可能
<localRepository>/path/to/local/repo</localRepository>
**Eclipse上での操作 [#t584a242]
***既存プロジェクトをmavenプロジェクトに変更 [#g652987d]
右クリックして構成→convert to maven project
***新規作成 [#i689ee35]
右クリックして新規作成→Maven→Maven Project
*プラグイン [#n4c77927]
**maven-release-plugin [#bf1d00ee]
pomのバージョンアップやタグの設定を自動でやってくれるプラ...
http://www.nulab.co.jp/kousei/chapter6/05.html
-pluginを取ってくるrepositoryはplugin-repositoryとして別...
|wagon|ファイル転送プラグイン|
|release|リリース作業用プラグイン|
|resource|リソースファイルコピーや文字列置換|
|exec|コマンド実行|
|surefire|テスト実施、結果レポート作成|
プラグインリポジトリは以下に設定する。
http://repo1.maven.org/maven2/
*注意点など [#l17c5f17]
特別な設定をしない限り、jarファイルをネット経由で持ってく...
*主要操作など [#l4882bbb]
**プロジェクト作成 [#gec98655]
-下記コマンドでディレクトリ構成含め勝手に作ってくれる
mvn archetype:create -DgroupId=com.rutake.sample -Dartif...
-warなら以下の通り
mvn archetype:generate -DgroupId=com.rutake.sample -Dart...
--pom.xmlには依存関係がないのでServlet系を利用するなら以...
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>
**コンパイル [#b0135ff3]
-テストコンパイルするにはappディレクトリに移動して以下の...
mvn compile
バージョンの指定はプロパティで行う。
maven.compiler.source, maven.compiler.target
**テスト [#gedd4ae5]
-JUnitテストするには
mvn test
-特定のクラスのみテストする
mvn test -Dtest={テストクラス名}
**パッケージ作成 [#nc81a40d]
mvn package
**リリース [#f79b28dc]
-ローカルリポジトリにリリースしてみる
mvn install
どのコマンドも初回実行時には関連jarをごっそりダウンロード...
**リモートリポジトリに配備 [#n41fc747]
-インストール先の情報はdistributionManagementセクションで...
mvn deploy
-手動デプロイ(jarとpom両方実施の必要あり)
mvn deploy:deploy-file -Durl=<アップロード先URL> -Drepos...
-手動デプロイ(pom) -DgeneratePom=falseを入れないと勝手に...
mvn deploy:deploy-file -Dfile=<POMFILE> -Durl=<リポジト...
-CURLでデプロイすることもできるらしい(nexusのHPより)
curl -u juven-test:****** https://oss.sonatype.org/servic...
juvenxu/ossrh-test/1.1/ossrh-test-1.1.pom --request PUT -...
**eclipseプロジェクト作成 [#k4904694]
mvn eclipse:eclipse
**どのprofile,pom,settingsが有効なのか出力 [#he3d7e2b]
mvn help:active-profiles
mvn help:effective-pom
mvn help:effective-settings
settings.xmlは~/.m2におかないと自動では読み込んではくれな...
**リポジトリのタイムアウト設定 [#j18321a6]
http://d.hatena.ne.jp/Kazuhira/20130623/1371978072
*文字列置換 [#xdcc2225]
フィルタリングという。以下のURLを参照せよ
http://www.limy.org/program/java/maven/filtering.html
*TIPS [#u28415a0]
|テストをスキップする|mvnコマンドに、 -Dmaven.test.skip=t...
|メモリの調整|環境変数MAVEN_OPTS=-Xmx512mを設定する。デフ...
*トラブルシューティング [#p0d0c9d3]
|内容|対策|
|Missing artifact||
|jarが古いまま|バージョンが同じだと新しいのを取得しないの...
|resolution will not be reattempted until the update inte...
|リポジトリを変更したのに旧リポジトリを見に行くまたは即タ...
|ソースjarができない|mvn source:jar|
-リポジトリ参照記録は以下のファイルに存在する。
artifact-versionno.pom.lastUpdated
*リポジトリの検索 [#n491dc7a]
http://mvnrepository.com/
*リポジトリソフトウェアの比較 [#q52de179]
+Apache Archiva
+Sonatype nexus
+Artifactory
http://binary-repositories-comparison.github.io/
*用語など [#af2685e7]
|用語名|説明|備考|
|artifactId|成果物のこと|人工物の意味から来ているらしい|
|groupId|パッケージ階層とほぼ同じ||
|プロジェクトサイト|mavenにて自動生成できるHTMLページ|Jav...
|Apache archiva|複数のmavenリポジトリをまとめるProxy的役...
|nexus|archivaと同じく、複数のmavenリポジトリをまとめるPr...
*リポジトリソフト [#c86b3435]
Archiva,sonatype nexus,Artifactoryがある。比較表がある。
http://docs.codehaus.org/display/MAVENUSER/Maven+Reposito...
**nexus(sonatype nexus) [#q4b0395e]
***nexus インストール手順 [#ude664eb]
warバンドルがなくなってしまった。nexusディレクトリ以下をT...
環境変数PLEXUS_NEXUS_WORKでワークディレクトリの設定をする
***設定ファイル [#b5b410dd]
PLEXUS_NEXUS_WORK/confにある。
|security.xml|認証系情報|
|nexus.xml|リポジトリ情報|
***nexusバージョンアップ [#v457d082]
本体だけでOK。
**リポジトリの設定 [#lf83329d]
Proxy,3rdParty,Hosted,Virtualの種類がある。
一般公開されているリポジトリのProxyとして使うならProxyだ...
*モジュールの考え方 [#e40bb458]
http://blog.livedoor.jp/android1009/archives/24341372.html
*トラブルシューティング [#t941083a]
Could not find the main class: org.codehaus.plexus.classw...
M2_HOMEを正しく設定しないと出てしまう。
#counter
ページ名: