「Maven」の版間の差分
ナビゲーションに移動
検索に移動
(→Tips) |
|||
| (同じ利用者による、間の1版が非表示) | |||
| 1行目: | 1行目: | ||
| − | ==Maven== | + | ==[[Maven]]== |
| − | *http://www.techscore.com/tech/Java/ | + | *http://www.techscore.com/tech/Java/[[Apache]]Jakarta/Maven/index/ |
==基本== | ==基本== | ||
===環境構築=== | ===環境構築=== | ||
| 16行目: | 16行目: | ||
====確認==== | ====確認==== | ||
C:\>mvn --version | C:\>mvn --version | ||
| − | Apache Maven 3.0.4 (r1232337; 2012-01-17 17:44:56+0900) | + | [[Apache]] Maven 3.0.4 (r1232337; 2012-01-17 17:44:56+0900) |
| − | Maven home: C:\springsource\apache-maven-3.0.4 | + | [[Maven]] home: C:\springsource\apache-maven-3.0.4 |
| − | Java version: 1.5.0_16, vendor: Sun Microsystems Inc. | + | [[Java]] version: 1.5.0_16, vendor: Sun Microsystems Inc. |
| − | Java home: C:\Program Files\Java\jdk1.5.0_16\jre | + | [[Java]] home: C:\Program Files\[[Java]]\jdk1.5.0_16\jre |
Default locale: ja_JP, platform encoding: MS932 | Default locale: ja_JP, platform encoding: MS932 | ||
| − | OS name: "windows | + | OS name: "windows [[vi]]sta", version: "6.1", arch: "x86", family: "windows" |
====プロキシ設定==== | ====プロキシ設定==== | ||
*/conf/settings.xml | */conf/settings.xml | ||
| 41行目: | 41行目: | ||
</proxies> | </proxies> | ||
====プロジェクトを作成==== | ====プロジェクトを作成==== | ||
| − | * | + | *JA[[R]] ファイルを作成するプロジェクトを作成 |
| − | mvn archetype:create -DgroupId=info.typea.sample - | + | mvn archetype:create -DgroupId=info.typea.sample -[[Dart]]ifactId=sample |
{|class="wikitable" | {|class="wikitable" | ||
!引数 | !引数 | ||
| 61行目: | 61行目: | ||
|} | |} | ||
====標準のディレクトリ構成==== | ====標準のディレクトリ構成==== | ||
| − | *Maven では標準のディレクトリ構成が決められている | + | *[[Maven]] では標準のディレクトリ構成が決められている |
| − | *構成を理解すれば、 Maven を利用した他のプロジェクトのディレクトリ構成も理解したことになる | + | *構成を理解すれば、 [[Maven]] を利用した他のプロジェクトのディレクトリ構成も理解したことになる |
*標準のディレクトリ構成に従うことが推奨 | *標準のディレクトリ構成に従うことが推奨 | ||
{|class="wikitable" | {|class="wikitable" | ||
| 69行目: | 69行目: | ||
|- | |- | ||
|src/main/java | |src/main/java | ||
| − | |Java ソースコード | + | |[[Java]] ソースコード |
|- | |- | ||
|src/test/java | |src/test/java | ||
| − | |テスト用の Java ソースコード | + | |テスト用の [[Java]] ソースコード |
|- | |- | ||
|} | |} | ||
===pom.xml=== | ===pom.xml=== | ||
*プロジェクトに関する情報を持つ重要なファイル | *プロジェクトに関する情報を持つ重要なファイル | ||
| − | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/ | + | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/[[XML]]Schema-instance" |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | <modelVersion>4.0.0</modelVersion> | ||
| 114行目: | 114行目: | ||
|- | |- | ||
|artifactId | |artifactId | ||
| − | |プロジェクトの成果物の名前。 作成する | + | |プロジェクトの成果物の名前。 作成する JA[[R]] や WA[[R]]、EA[[R]] ファイルなどの名前に使用されます。 |
|- | |- | ||
|packaging | |packaging | ||
| 126行目: | 126行目: | ||
|- | |- | ||
|url | |url | ||
| − | |プロジェクトのサイトの | + | |プロジェクトのサイトの U[[R]]L。 ドキュメントを作成するときなどに使用されます。 |
|- | |- | ||
|dependencies | |dependencies | ||
| 144行目: | 144行目: | ||
*プロジェクトのサイトを簡単に作成 | *プロジェクトのサイトを簡単に作成 | ||
mvn site | mvn site | ||
| − | ==== | + | ====JA[[R]] ファイルの作成==== |
mvn package | mvn package | ||
====ローカルリポジトリへのインストール==== | ====ローカルリポジトリへのインストール==== | ||
| 159行目: | 159行目: | ||
<repository> | <repository> | ||
<id>deploy-repository</id> | <id>deploy-repository</id> | ||
| − | <name> | + | <name>deploy[[R]]epository</name> |
| − | <url>file://${env.M2_HOME}/ | + | <url>file://${env.M2_HOME}/deploy[[R]]epository</url> |
</repository> | </repository> | ||
</distributionManagement> | </distributionManagement> | ||
| 171行目: | 171行目: | ||
==依存性== | ==依存性== | ||
*プロジェクトの依存するライブラリを自動的にダウンロードし、必要なときにクラスパスの設定を行う | *プロジェクトの依存するライブラリを自動的にダウンロードし、必要なときにクラスパスの設定を行う | ||
| − | *Maven を用いた開発では、プロジェクトを作成するたびに、ライブラリを一つひとつ手作業でダウンロードする必要がない。 | + | *[[Maven]] を用いた開発では、プロジェクトを作成するたびに、ライブラリを一つひとつ手作業でダウンロードする必要がない。 |
| − | *ライブラリのダウンロードはリモートリポジトリ(デフォルトでは Maven の セントラルリポジトリ) から行われる | + | *ライブラリのダウンロードはリモートリポジトリ(デフォルトでは [[Maven]] の セントラルリポジトリ) から行われる |
*必要とするライブラリがリモートリポジトリに存在しない場合や、存在しても必要とするバージョンのものが無い場合は、ライブラリを手作業でダウンロードし、ローカルリポジトリにインストールしなければいけない | *必要とするライブラリがリモートリポジトリに存在しない場合や、存在しても必要とするバージョンのものが無い場合は、ライブラリを手作業でダウンロードし、ローカルリポジトリにインストールしなければいけない | ||
*ローカルリポジトリのライブラリはローカルにあるプロジェクトで共有されるので、何度も行う必要はない | *ローカルリポジトリのライブラリはローカルにあるプロジェクトで共有されるので、何度も行う必要はない | ||
| 184行目: | 184行目: | ||
|scope の指定を省略した場合のデフォルト値です。全ての状況でクラスパスに追加されます。 | |scope の指定を省略した場合のデフォルト値です。全ての状況でクラスパスに追加されます。 | ||
|- | |- | ||
| − | | | + | |pro[[vi]]ded |
|ライブラリが JDK やコンテナによって提供される場合に指定します。コンパイル時のみクラスパスに追加されます。 | |ライブラリが JDK やコンテナによって提供される場合に指定します。コンパイル時のみクラスパスに追加されます。 | ||
|- | |- | ||
| 198行目: | 198行目: | ||
|} | |} | ||
=====groupId, artifactId, version に指定する値の調べ方===== | =====groupId, artifactId, version に指定する値の調べ方===== | ||
| − | *Maven ではデフォルトのリモートリポジトリとしてhttp://repo1.maven.org/maven2が指定されている | + | *[[Maven]] ではデフォルトのリモートリポジトリとしてhttp://repo1.maven.org/maven2が指定されている |
*groupId や artifactId に指定する値は、通常ここから探す | *groupId や artifactId に指定する値は、通常ここから探す | ||
*検索用サイト | *検索用サイト | ||
| 216行目: | 216行目: | ||
====出力先のディレクトリを指定==== | ====出力先のディレクトリを指定==== | ||
$ mvn dependency:copy-dependencies -DoutputDirectory=lib | $ mvn dependency:copy-dependencies -DoutputDirectory=lib | ||
| − | ==Tips== | + | ==[[Tips]]== |
| − | ===Spring Tool Suite=== | + | ===[https://www.typea.info/blog/index.php/2020/12/01/vscode_java_maven_firestore/ VSCode+Java+MavenでFirestoreにデータ登録]=== |
| − | *Spring Tool Suite Mavenプロジェクトの作成 | + | *[https://www.typea.info/blog/index.php/2020/12/01/vscode_java_maven_firestore/ VSCode+Java+MavenでFirestoreにデータ登録] |
| − | *Spring Tool Suite Mavenでネットワークエラー | + | ===[[Spring Tool Suite]]=== |
| + | *[[Spring Tool Suite Mavenプロジェクトの作成]] | ||
| + | *[[Spring Tool Suite Mavenでネットワークエラー]] | ||
===トラブル=== | ===トラブル=== | ||
====Missing Artifact 問題==== | ====Missing Artifact 問題==== | ||
| − | *Eclipse で Missing Artifact Problem が発生したら、プロジェクト - Maven - Update Project を選択 | + | *[[Eclipse]] で Missing Artifact Problem が発生したら、プロジェクト - Maven - Update Project を選択 |
| − | *Force Update of Snapshot/ | + | *Force Update of Snapshot/[[R]]elease にチェックを入れて実行 |
2020年12月1日 (火) 13:09時点における最新版
Maven
- http://www.techscore.com/tech/Java/ApacheJakarta/Maven/index/
基本
環境構築
Download
Install mac
$ brew search maven $ brew install maven@3.5
環境変数
- M2_HOME=インストールフォルダ
- PATH=%PATH%;%M2_HOME%;bin
確認
C:\>mvn --version Apache Maven 3.0.4 (r1232337; 2012-01-17 17:44:56+0900) Maven home: C:\springsource\apache-maven-3.0.4 Java version: 1.5.0_16, vendor: Sun Microsystems Inc. Java home: C:\Program Files\Java\jdk1.5.0_16\jre Default locale: ja_JP, platform encoding: MS932 OS name: "windows vista", version: "6.1", arch: "x86", family: "windows"
プロキシ設定
- /conf/settings.xml
<proxies>
<!-- proxy
| Specification for one proxy, to be used in connecting to the network.
|-->
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<!--username>proxyuser</username -->
<!--password>proxypass</password -->
<host>172.16.xx.xx</host>
<port>8080</port>
<!-- nonProxyHosts>127.0.0.1|localhost</nonProxyHosts> -->
</proxy>
<!-- -->
</proxies>
プロジェクトを作成
- JAR ファイルを作成するプロジェクトを作成
mvn archetype:create -DgroupId=info.typea.sample -DartifactId=sample
| 引数 | 意味 |
|---|---|
| archetype:create | プロジェクトのスケルトンを作成 |
| groupId | プロジェクトのルートパッケージ名 |
| artifactId | プロジェクト名 |
| システムプロパティを設定する |
標準のディレクトリ構成
| src ディレクトリ以下 | 内容 |
|---|---|
| src/main/java | Java ソースコード |
| src/test/java | テスト用の Java ソースコード |
pom.xml
- プロジェクトに関する情報を持つ重要なファイル
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>info.typea.sample</groupId> <artifactId>sample</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>sample</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
| 要素 | 内容 |
|---|---|
| modelVersion | POM のバージョン。 特に変更する必要はありません。 |
| groupId | プロジェクトを一意に識別する名前。 プロジェクトのルートパッケージ名を指定するのが一般的です。 |
| artifactId | プロジェクトの成果物の名前。 作成する JAR や WAR、EAR ファイルなどの名前に使用されます。 |
| packaging | 作成する成果物のパッケージング・タイプ。 jar (デフォルト)、war、 ear などがあります。 |
| version | プロジェクトのバージョン。 |
| name | プロジェクトの表示名。 ドキュメントを作成するときなどに使用されます。 |
| url | プロジェクトのサイトの URL。 ドキュメントを作成するときなどに使用されます。 |
| dependencies | プロジェクトが依存するライブラリの情報。 |
機能
コンパイル
- pom.xmlのあるディレクトリで実行する
mvn compile
ユニットテスト
mvn test
ドキュメンテーション
mvn javadoc:javadoc
サイトの作成
- プロジェクトのサイトを簡単に作成
mvn site
JAR ファイルの作成
mvn package
ローカルリポジトリへのインストール
- ローカルリポジトリにインストールすることで、ローカルにある他のプロジェクトから参照可能になる
- デフォルトでは、ユーザーディレクトリの、.m2 フォルダ以下
mvn install
リモートリポジトリへの配備
- 事前にリモートリポジトリの情報を pom.xml に記述
- project/distributionManagement 要素の入れ子として repository 要素を追加
mvn deploy
<project ...>
...
<distributionManagement>
<repository>
<id>deploy-repository</id>
<name>deployRepository</name>
<url>file://${env.M2_HOME}/deployRepository</url>
</repository>
</distributionManagement>
...
</project>
プロジェクトのクリーン
- 生成したファイルを削除
- target ディレクトリが削除される
mvn clean
依存性
- プロジェクトの依存するライブラリを自動的にダウンロードし、必要なときにクラスパスの設定を行う
- Maven を用いた開発では、プロジェクトを作成するたびに、ライブラリを一つひとつ手作業でダウンロードする必要がない。
- ライブラリのダウンロードはリモートリポジトリ(デフォルトでは Maven の セントラルリポジトリ) から行われる
- 必要とするライブラリがリモートリポジトリに存在しない場合や、存在しても必要とするバージョンのものが無い場合は、ライブラリを手作業でダウンロードし、ローカルリポジトリにインストールしなければいけない
- ローカルリポジトリのライブラリはローカルにあるプロジェクトで共有されるので、何度も行う必要はない
依存性の指定とスコープ
- 依存するライブラリを指定するには、project/dependencies の入れ子として dependency 要素を追加
| 要素 | 内容 |
|---|---|
| compile | scope の指定を省略した場合のデフォルト値です。全ての状況でクラスパスに追加されます。 |
| provided | ライブラリが JDK やコンテナによって提供される場合に指定します。コンパイル時のみクラスパスに追加されます。 |
| runtime | 実行時のみに必要な場合に指定します。テストの実行および通常の実行のときにクラスパスに追加されます。 |
| test | テストのときのみ必要な場合に指定します。テストのコンパイルと実行のときにクラスパスに追加されます。 |
| system | 明示的にクラスパスに追加する場合に指定します。このスコープのライブラリは常に有効であるとみなされ、リポジトリの検索は行われません。 |
groupId, artifactId, version に指定する値の調べ方
- Maven ではデフォルトのリモートリポジトリとしてhttp://repo1.maven.org/maven2が指定されている
- groupId や artifactId に指定する値は、通常ここから探す
- 検索用サイト
依存性の指定を行う
pom.xml で依存性の指定
Archetype Catalog
- http://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-catalog.html
- http://maven.apache.org/archetype/archetype-models/archetype-catalog/archetype-catalog.html
依存ライブラリの取得
$ mvn dependency:copy-dependencies
出力先のディレクトリを指定
$ mvn dependency:copy-dependencies -DoutputDirectory=lib
Tips
VSCode+Java+MavenでFirestoreにデータ登録
Spring Tool Suite
トラブル
Missing Artifact 問題
© 2006 矢木浩人