DockerでNexusサーバーを立ち上げる
適当な作業用フォルダ(例: maven-test)を作成し、その中に以下の docker-compose.yml を作成します。
services:
nexus:
image: sonatype/nexus3:latest
ports:
- "8081:8081"
volumes:
- nexus-data:/nexus-data
volumes:
nexus-data:
ファイルを作成したら、以下のコマンドで起動します。
起動には少し時間(1〜2分)がかかります。ブラウザで http://localhost:8081 にアクセスし、Nexusの画面が表示されれば成功です。
docker compose up -d
Nexusの初期パスワードを取得する
Nexusにライブラリをアップロードするためには管理者パスワードが必要です。
以下のコマンドを実行してパスワードを確認し、メモしておいてください。
docker exec -it $(docker compose ps -q nexus) cat /nexus-data/admin.password
Nexusの管理者パスワードを変更する
ブラウザから admin / 取得したパスワード でログインし、案内に従って新しいパスワード(例: admin123)を設定し、匿名アクセス(Anonymous Access)を「Enable」にしてください。
miseでJava17をインストールする
以下のコマンドを実行して、Java17をインストールします。
mise use --global java@17
miseでMavenをインストールする
以下のコマンドを実行して、Mavenをインストールします。
mise use --global maven@latest
Mavenの認証設定
ローカルのMavenがNexusへアクセス(アップロード)できるように、ユーザーのMaven設定ファイル(通常は ~/.m2/settings.xml または C:\Users\ユーザー名.m2\settings.xml)を編集・作成します。
passwordタグは、上記で設定したパスワードを記入してください。
<settings>
<servers>
<server>
<id>local-nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
</settings>
テスト用の独自ライブラリを作成する
ディレクトリを作成する
以下のコマンドを実行して、ディレクトリを作成します。
mkdir -p custom-lib/src/main/java/com/mycompany
cd custom-lib
pom.xmlを作成する
custom-lib フォルダの直下に pom.xml を作成します。
Javaのコンパイルが通るように、文字コードやJavaバージョンのプロパティを追加します。
<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>com.mycompany</groupId>
<artifactId>custom-lib</artifactId>
<version>1.0.0</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<distributionManagement>
<repository>
<id>local-nexus</id>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
</project>
Javaソースコードを作成する
実際にコンパイルされるJavaクラスを作成します。
先ほど作成したディレクトリ src/main/java/com/mycompany/ の中に、CustomUtil.java というファイルを作成してください。
package com.mycompany;
public class CustomUtil {
public static String getMessage() {
return "Hello from custom-lib version 1.0.0!";
}
}
Nexusへデプロイする(v1.0.0)
pom.xml がある custom-lib フォルダ内で、以下のコマンドを実行してコンパイルとNexusへのデプロイを行います。
BUILD SUCCESS と表示されれば、Nexusに v1.0.0 が登録されました。
mvn clean deploy
バージョンを上げて再度デプロイする(v2.0.0)
最新バージョンを検知するテストのために、バージョンを上げたものも登録します。
pom.xml を開き、1.0.0 を 2.0.0 に変更します。
CustomUtil.java の戻り値の文字列を version 2.0.0! に変更します。
再度、以下のコマンドを実行します。
mvn clean deploy
メインプロジェクトで最新バージョンを検知する
別のフォルダに、この独自ライブラリを利用する「メインプロジェクト」を作成します。
mkdir my-app
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>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<repositories>
<repository>
<id>local-nexus</id>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>custom-lib</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
このディレクトリ(my-app/)で、バージョンチェックのコマンドを実行します。
mvn versions:display-dependency-updates
実行結果は以下となります。
新しいバージョンと現在のバージョンの差が表示されます。
[INFO] The following dependencies in Dependencies have newer versions:
[INFO] com.mycompany:custom-lib .............................. 1.0.0 -> 2.0.0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.395 s
[INFO] Finished at: 2026-06-24T17:23:09+09:00
[INFO] ------------------------------------------------------------------------
以上です。