1. はじめに
Mavenはインターネットに公開されているMavenのCetralリポジトリ等にアクセスし、必要なライブラリを取得します。そのため、会社のネットワークなどインターネットに直接アクセスできない環境では、ProxyかNEXUSを経由させる必要があります。
今回はWindowsにMavenをインストールする方法と併せて、ProxyやNEXUSを経由させる方法について説明します。
なお、よく利用するMavenコマンドについては「TERASOLUNA5.xで覚えるべきMavenコマンド」を参照ください。
1.1. 検証環境
- Java 1.8.0_131
- Apache Maven 3.3.9
- Nexus Repository Manager OSS 2.x (2.14.4-03)
1.2. 作業の流れ
項番 | 内容 | 備考 |
---|---|---|
1 | Mavenのダウンロードとインストール | MavenのインストールはZipファイルをダウンロードし、Zipファイルを展開するだけです。 |
2 | 環境変数の設定 | Mavenコマンドを有効にするため環境変数を設定します。 |
3 | setting.xmlの配置 | Mavenの設定ファイルであるsetting.xmlを作成して配置します。 インターネットのCentralリポジトリにアクセスする方法がいくつかあり、それぞれ設定方法が異なります。 1.Proxyを経由する方法 2.NEXUSを経由する方法 |
4 | 動作確認 | 設定が正しく行われていることを確認するためTERASOLUNA5.xのプロジェクトを作成してみます。 |
2. Mavenのダウンロードとインストール
Mavenの公式サイト https://maven.apache.org/ からZipファイルをダウンロードします。
インストールはZipファイルを展開するだけで完了です。
今回はC:\tools
ディレクトリにインストール(展開)することとします。
3. 環境変数の設定
各自の環境に合わせて設定してください。
項番 | キー | 値 |
---|---|---|
1 | JAVA_HOME | C:\Program Files\Java\jdk1.8.0_131 |
2 | MAVEN_HOME | C:\tools\apache-maven-3.3.9 |
3 | path | %JAVA_HOME%\bin と %MAVEN_HOME%\bin を追加 |
4. setting.xmlの配置
4.1. C:\Users\ユーザ名\.m2
ディレクトリの作成
Mavenの設定ファイル(setting.xml)はユーザ単位で作成します。
格納先はC:\Users\ユーザ名\.m2
ディレクトリになります。
残念ながらWindowsのエクスプローラ(GUI)では.
で始まるディレクトリを作成することができません。コマンドプロンプトでmkdir .m2
で作成してください。
4.2. ローカルリポジトリのディレクトリを変更する場合のsetting.xml
Mavenの設定として、ローカルリポジトリのディレクトリをデフォルトのユーザのホームディレクトリ配下から変更することをお勧めします。
必要なライブラリが全部ローカルリポジトリに反映された後、Zipファイル等でアーカイブし、プロジェクトメンバに配布することでローカルリポジトリの作成時間を短くすることができます。
項番 | ローカルリポジトリのディレクトリ | 内容 |
---|---|---|
1 | C:\Users\ユーザ名\.m2\repository |
デフォルト |
2 | C:/tools/repository |
変更例です 各自の環境に合わせてください |
<settings>
<localRepository>C:/tools/repository</localRepository>
</settings>
4.3. proxy経由のsetting.xml
proxyを経由してインターネットにアクセスするため、proxyの接続情報(IPアドレス、ポート番号等)をsetting.xml
に設定します。
項番 | タグ | 値 | 内容 |
---|---|---|---|
1 | <id> |
mavenProxy | ・proxyの接続情報を識別するためのID ・任意の値で構わない |
2 | <host> |
yourproxy.example.com | ・proxyサーバのホスト名またはIPアドレス |
3 | <port> |
8080 | ・proxyサーバのポート番号 |
4 | <username> |
proxyUserId | ・認証情報のユーザID ・ユーザ認証が必要な場合に設定 ・不要な場合はタグ自体記述不要 |
5 | <password> |
proxyUserPassword | ・認証情報のパスワード ・ユーザ認証が必要な場合に設定 ・不要な場合はタグ自体記述不要 |
6 | <nonProxyHosts> |
localhost|127.0.0.1|10.* (正しい区切り文字は半角の|) |
・proxyを経由させないホストやIPアドレス |
<settings>
<localRepository>C:/tools/repository</localRepository>
<proxies>
<proxy>
<id>mavenProxy</id>
<active>true</active>
<protocol>http</protocol>
<host>yourproxy.example.com</host>
<port>8080</port>
<username>proxyUserId</username>
<password>proxyUserPassword</password>
<nonProxyHosts>localhost|127.0.0.1|10.*</nonProxyHosts>
</proxy>
</proxies>
</settings>
4.4. NEXUS経由のsetting.xml
NEXUSを経由してインターネットにアクセスするため、NEXUSサーバのURLをsetting.xmlに設定します。
なお、NEXUSサーバの構築方法については別の機会に記事にしたいと思います。
項番 | タグ | 値 | 内容 |
---|---|---|---|
1 | <id> |
mynexus | ・NEXUSサーバを識別するためのID ・任意の値で構わない |
2 | <url> |
http://mynexusserver:8081/nexus/content/groups/public |
・NEXUSサーバで公開しているリポジトリのURL ・NEXUSサーバの管理者に聞くこと |
<settings>
<localRepository>C:/tools/repository</localRepository>
<mirrors>
<mirror>
<id>mynexus</id>
<mirrorOf>*</mirrorOf>
<url>http://mynexusserver:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>mynexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>mynexus</activeProfile>
</activeProfiles>
</settings>
5. 動作確認
TERASOLUNA5.xのガイドラインの「3.1.2. 開発プロジェクトの作成」で試しにプロジェクトを作成してみます。
mvn archetype:generate -B^
-DarchetypeGroupId=org.terasoluna.gfw.blank^
-DarchetypeArtifactId=terasoluna-gfw-multi-web-blank-mybatis3-archetype^
-DarchetypeVersion=5.3.0.RELEASE^
-DgroupId=com.example.todo^
-DartifactId=todo^
-Dversion=1.0.0-SNAPSHOT
C:\work>mvn archetype:generate -B^
More? -DarchetypeGroupId=org.terasoluna.gfw.blank^
More? -DarchetypeArtifactId=terasoluna-gfw-multi-web-blank-mybatis3-archetype^
More? -DarchetypeVersion=5.3.0.RELEASE^
More? -DgroupId=com.example.todo^
More? -DartifactId=todo^
More? -Dversion=1.0.0-SNAPSHOT
[INFO] Scanning for projects...
[INFO] Downloading: http://mynexusserver:8081/nexus/content/groups/public/org/codehaus/mojo/maven-metadata.xml
[INFO] Downloading: http://mynexusserver:8081/nexus/content/groups/public/org/apache/maven/plugins/maven-metadata.xml
... 省略 ...
[INFO] Using following parameters for creating project from Archetype: terasoluna-gfw-multi-web-blank-mybatis3-archetype
:5.3.0.RELEASE
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.example.todo
[INFO] Parameter: artifactId, Value: todo
[INFO] Parameter: version, Value: 1.0.0-SNAPSHOT
[INFO] Parameter: package, Value: com.example.todo
[INFO] Parameter: packageInPathFormat, Value: com/example/todo
[INFO] Parameter: package, Value: com.example.todo
[INFO] Parameter: version, Value: 1.0.0-SNAPSHOT
[INFO] Parameter: groupId, Value: com.example.todo
[INFO] Parameter: artifactId, Value: todo
[INFO] Parent element not overwritten in C:\work\todo\todo-env\pom.xml
[INFO] Parent element not overwritten in C:\work\todo\todo-domain\pom.xml
[INFO] Parent element not overwritten in C:\work\todo\todo-web\pom.xml
[INFO] Parent element not overwritten in C:\work\todo\todo-initdb\pom.xml
[INFO] Parent element not overwritten in C:\work\todo\todo-selenium\pom.xml
[INFO] Project created from Archetype in dir: C:\work\todo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 31.169 s
[INFO] Finished at: 2017-09-05T20:32:37+09:00
[INFO] Final Memory: 10M/28M
[INFO] ------------------------------------------------------------------------
C:\work>
NEXUS経由の場合、[INFO] Downloading: http://mynexusserver:8081/nexus/content/groups/public/org/codehaus/mojo/maven-metadata.xml
のようにダウンロード先のURLがNEXUSサーバになっていることが分かります。
6. さいごに
今回はWindows上にMavenをインストールする方法と、Proxyを経由させる設定やNEXUSを経由させる設定について説明しました。
少人数のプロジェクトでは各個人がProxyを経由する方法でも構いません問題はありませんが、大規模なプロジェクトではNEXUSのキャッシュが有効になるNEXUSを経由させることをお勧めします。