| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Maven」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==Maven== *http://www.techscore.com/tech/Java/ApacheJakarta/Maven/index/ ==基本== ===環境構築=== ====Download==== *http://maven.apache.org/download.cgi ==…」)
 
 
(同じ利用者による、間の2版が非表示)
1行目: 1行目:
==Maven==
+
==[[Maven]]==
*http://www.techscore.com/tech/Java/ApacheJakarta/Maven/index/
+
*http://www.techscore.com/tech/Java/[[Apache]]Jakarta/Maven/index/
 
==基本==
 
==基本==
 
===環境構築===
 
===環境構築===
15行目: 15行目:
 
*PATH=%PATH%;%M2_HOME%;bin
 
*PATH=%PATH%;%M2_HOME%;bin
 
====確認====
 
====確認====
  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 vista", version: "6.1", arch: "x86", family: "windows"
+
  OS name: "windows [[vi]]sta", version: "6.1", arch: "x86", family: "windows"
 
====プロキシ設定====
 
====プロキシ設定====
 
*/conf/settings.xml
 
*/conf/settings.xml
   <proxies>
+
   &lt;proxies&gt;
     <!-- proxy
+
     &lt;!-- proxy
 
     | Specification for one proxy, to be used in connecting to the network.
 
     | Specification for one proxy, to be used in connecting to the network.
     |-->
+
     |--&gt;
     <proxy>
+
     &lt;proxy&gt;
       <id>optional</id>
+
       &lt;id&gt;optional&lt;/id&gt;
       <active>true</active>
+
       &lt;active&gt;true&lt;/active&gt;
       <protocol>http</protocol>
+
       &lt;protocol&gt;http&lt;/protocol&gt;
       <!--username>proxyuser</username -->
+
       &lt;!--username&gt;proxyuser&lt;/username --&gt;
       <!--password>proxypass</password -->
+
       &lt;!--password&gt;proxypass&lt;/password --&gt;
       <host>172.16.xx.xx</host>
+
       &lt;host&gt;172.16.xx.xx&lt;/host&gt;
       <port>8080</port>
+
       &lt;port&gt;8080&lt;/port&gt;
       <!-- nonProxyHosts>127.0.0.1|localhost</nonProxyHosts> -->
+
       &lt;!-- nonProxyHosts&gt;127.0.0.1|localhost&lt;/nonProxyHosts&gt; --&gt;
     </proxy>
+
     &lt;/proxy&gt;
     <!-- -->
+
     &lt;!-- --&gt;
   </proxies>
+
   &lt;/proxies&gt;
 
====プロジェクトを作成====
 
====プロジェクトを作成====
*JAR ファイルを作成するプロジェクトを作成
+
*JA[[R]] ファイルを作成するプロジェクトを作成
  mvn archetype:create -DgroupId=info.typea.sample -DartifactId=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/XMLSchema-instance"
+
  &lt;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"&gt;
   <modelVersion>4.0.0</modelVersion>
+
   &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
 
   
 
   
   <groupId>info.typea.sample</groupId>
+
   &lt;groupId&gt;info.typea.sample&lt;/groupId&gt;
   <artifactId>sample</artifactId>
+
   &lt;artifactId&gt;sample&lt;/artifactId&gt;
   <version>1.0-SNAPSHOT</version>
+
   &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
   <packaging>jar</packaging>
+
   &lt;packaging&gt;jar&lt;/packaging&gt;
 
   
 
   
   <name>sample</name>
+
   &lt;name&gt;sample&lt;/name&gt;
   <url>http://maven.apache.org</url>
+
   &lt;url&gt;http://maven.apache.org&lt;/url&gt;
 
   
 
   
   <properties>
+
   &lt;properties&gt;
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
     &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
   </properties>
+
   &lt;/properties&gt;
 
   
 
   
   <dependencies>
+
   &lt;dependencies&gt;
     <dependency>
+
     &lt;dependency&gt;
       <groupId>junit</groupId>
+
       &lt;groupId&gt;junit&lt;/groupId&gt;
       <artifactId>junit</artifactId>
+
       &lt;artifactId&gt;junit&lt;/artifactId&gt;
       <version>3.8.1</version>
+
       &lt;version&gt;3.8.1&lt;/version&gt;
       <scope>test</scope>
+
       &lt;scope&gt;test&lt;/scope&gt;
     </dependency>
+
     &lt;/dependency&gt;
   </dependencies>
+
   &lt;/dependencies&gt;
  </project>
+
  &lt;/project&gt;
  
 
{|class="wikitable"
 
{|class="wikitable"
114行目: 114行目:
 
|-
 
|-
 
|artifactId
 
|artifactId
|プロジェクトの成果物の名前。 作成する JAR WAR、EAR ファイルなどの名前に使用されます。
+
|プロジェクトの成果物の名前。 作成する JA[[R]] WA[[R]]、EA[[R]] ファイルなどの名前に使用されます。
 
|-
 
|-
 
|packaging
 
|packaging
126行目: 126行目:
 
|-
 
|-
 
|url
 
|url
|プロジェクトのサイトの URL。 ドキュメントを作成するときなどに使用されます。
+
|プロジェクトのサイトの U[[R]]L。 ドキュメントを作成するときなどに使用されます。
 
|-
 
|-
 
|dependencies
 
|dependencies
144行目: 144行目:
 
*プロジェクトのサイトを簡単に作成
 
*プロジェクトのサイトを簡単に作成
 
  mvn site
 
  mvn site
====JAR ファイルの作成====
+
====JA[[R]] ファイルの作成====
 
  mvn package
 
  mvn package
 
====ローカルリポジトリへのインストール====
 
====ローカルリポジトリへのインストール====
154行目: 154行目:
 
*project/distributionManagement 要素の入れ子として repository 要素を追加
 
*project/distributionManagement 要素の入れ子として repository 要素を追加
 
  mvn deploy
 
  mvn deploy
  <project ...>
+
  &lt;project ...&gt;
 
   ...
 
   ...
   <distributionManagement>
+
   &lt;distributionManagement&gt;
     <repository>
+
     &lt;repository&gt;
       <id>deploy-repository</id>
+
       &lt;id&gt;deploy-repository&lt;/id&gt;
       <name>deployRepository</name>
+
       &lt;name&gt;deploy[[R]]epository&lt;/name&gt;
       <url>file://${env.M2_HOME}/deployRepository</url>
+
       &lt;url&gt;file://${env.M2_HOME}/deploy[[R]]epository&lt;/url&gt;
     </repository>
+
     &lt;/repository&gt;
   </distributionManagement>
+
   &lt;/distributionManagement&gt;
 
   ...
 
   ...
  </project>
+
  &lt;/project&gt;
 
====プロジェクトのクリーン====
 
====プロジェクトのクリーン====
 
*生成したファイルを削除
 
*生成したファイルを削除
171行目: 171行目:
 
==依存性==
 
==依存性==
 
*プロジェクトの依存するライブラリを自動的にダウンロードし、必要なときにクラスパスの設定を行う
 
*プロジェクトの依存するライブラリを自動的にダウンロードし、必要なときにクラスパスの設定を行う
*Maven を用いた開発では、プロジェクトを作成するたびに、ライブラリを一つひとつ手作業でダウンロードする必要がない。
+
*[[Maven]] を用いた開発では、プロジェクトを作成するたびに、ライブラリを一つひとつ手作業でダウンロードする必要がない。
*ライブラリのダウンロードはリモートリポジトリ(デフォルトでは Maven の セントラルリポジトリ) から行われる
+
*ライブラリのダウンロードはリモートリポジトリ(デフォルトでは [[Maven]] の セントラルリポジトリ) から行われる
 
*必要とするライブラリがリモートリポジトリに存在しない場合や、存在しても必要とするバージョンのものが無い場合は、ライブラリを手作業でダウンロードし、ローカルリポジトリにインストールしなければいけない
 
*必要とするライブラリがリモートリポジトリに存在しない場合や、存在しても必要とするバージョンのものが無い場合は、ライブラリを手作業でダウンロードし、ローカルリポジトリにインストールしなければいけない
 
*ローカルリポジトリのライブラリはローカルにあるプロジェクトで共有されるので、何度も行う必要はない
 
*ローカルリポジトリのライブラリはローカルにあるプロジェクトで共有されるので、何度も行う必要はない
184行目: 184行目:
 
|scope の指定を省略した場合のデフォルト値です。全ての状況でクラスパスに追加されます。
 
|scope の指定を省略した場合のデフォルト値です。全ての状況でクラスパスに追加されます。
 
|-
 
|-
|provided
+
|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/Release にチェックを入れて実行
+
*Force Update of Snapshot/[[R]]elease にチェックを入れて実行

2020年12月1日 (火) 13:09時点における最新版

Maven

基本

環境構築

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 プロジェクト名
システムプロパティを設定する

標準のディレクトリ構成

  • Maven では標準のディレクトリ構成が決められている
  • 構成を理解すれば、 Maven を利用した他のプロジェクトのディレクトリ構成も理解したことになる
  • 標準のディレクトリ構成に従うことが推奨
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 に指定する値の調べ方

依存性の指定を行う

pom.xml で依存性の指定

Archetype Catalog

依存ライブラリの取得

$ mvn dependency:copy-dependencies

出力先のディレクトリを指定

$ mvn dependency:copy-dependencies -DoutputDirectory=lib

Tips

VSCode+Java+MavenでFirestoreにデータ登録

Spring Tool Suite

トラブル

Missing Artifact 問題

  • Eclipse で Missing Artifact Problem が発生したら、プロジェクト - Maven - Update Project を選択
  • Force Update of Snapshot/Release にチェックを入れて実行