CLOVER🍀

That was when it all began.

Sonatype Nexus 3で、Third PartyのMavenアーティファクトをアップロードする(+リポジトリについて少し)

Sonatype Nexusですが、バージョン 2の頃はNexus上でアーティファクトのアップロードができていたようですが、

Using the User Interface (Nexus 2)

Uploading Components (Nexus 2)

バージョン 3では、どうもこれができなさそうな感じです。
※2系の頃に「Using the User Interface」にあった「Uploading Components」がなくなっている

Using the User Interface (Nexus 3)

実際、Nexusの画面上を探してみても、見つからない感じです。

となると、「mvn deploy:deploy-file」でアップロードするしかない感じですね。

Apache Maven Deploy Plugin - deploy:deploy-file

「mvn deploy:deploy-file」でMavenアーティファクトをアップロードする

アップロードする内容を、以下とします。

また、settings.xmlには、以下のような設定が入っているとします。
※アカウントはNexusデフォルト
$HOME/.m2/settings.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>my-maven-hosted-repo</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
</settings>

pom.xmlがない場合
※file、repositoryId、urlは必須なので、追加でgroupIdとartifactIdとversionを指定

$ mvn deploy:deploy-file \
-Dfile=greeting-nexus-1.0.0.jar \
-DrepositoryId=my-maven-hosted-repo \
-Durl=http://my.nexus.repo.example.com:8081/repository/my-maven-hosted-repo/ \
-DgroupId=com.example \
-DartifactId=greeting-nexus \
-Dversion=1.0.0

pom.xmlがある場合

$ mvn deploy:deploy-file \
-Dfile=greeting-nexus-1.0.0.jar \
-DrepositoryId=my-maven-hosted-repo \
-Durl=http://my.nexus.repo.example.com:8081/repository/my-maven-hosted-repo/ \
-DpomFile=pom.xml

とまあ、こんな感じでNexusの画面というよりは、mvnコマンドでデプロイする感じになるんでしょう。

既存のローカルリポジトリからリポジトリを作りたい場合

これ、ローカルリポジトリ(もしくはそのコピー)をProxy Repositoryにすればいいのかな?とか思ったのですが、
「file:///」をRemote storageに指定できなかったので断念…。

ApacheとかのWebサーバーを使ってリポジトリを公開し、そこにProxyする(Remote storageに指定する)
とかするしかないでしょうねー。

オマケ

この話と合わせて、リポジトリのバックアップとか移行について調べようかと思ったのですが、
Nexus 3では以下のような感じになっています。

Welcome to Sonatype Help

Nexus 2の頃は、割と単純だったというか、「sonatype-work/nexus/storage/[リポジトリ名]」ディレクトリの
配下にデプロイしたアーティファクトがそのまま置かれているという感じだったので、それをそのまま持っていったり
直接追加してもよさそうな感じでした。

How to Back Up Nexus Configuration and Repository Artifacts

ですが、Nexus 3ではアーティファクトの保存先がOrientDBになっているみたいで、2の頃みたいにアーティファクトを
ファイルシステム上で直接見るのは難しそうです。

個人的には、気になるポイントだったので覚えておきましょう…。