1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

リポジトリサーバー(Nexus)をDockerで立ち上げ、独自ライブラリの新しいバージョンを検知する

1
Posted at

DockerでNexusサーバーを立ち上げる

適当な作業用フォルダ(例: maven-test)を作成し、その中に以下の docker-compose.yml を作成します。

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.xml
<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バージョンのプロパティを追加します。

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.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 というファイルを作成してください。

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を作成します。

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] ------------------------------------------------------------------------

以上です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?