Mavenで管理しているプロジェクトに.jarファイルを追加する方法


お世話になっております。

Javaで形態素解析をしています。使用しているツールは`Kuromoji`です。

<https://github.com/atilika/kuromoji>

このページにあるように`pom.xml`に

[code]

    <dependency>
      <groupId>com.atilika.kuromoji</groupId>
      <artifactId>kuromoji-ipadic</artifactId>
      <version>0.9.0</version>
    </dependency>
    
[/code]

を書いてプロジェクトで`Kuromoji`を使っています。

また、一人での作業ではなくチームで作業しています。

形態素解析の辞書は最新のものを使いたいことから`mecab-ipadic-neologd`を使いたいと思っています。

<https://github.com/neologd/mecab-ipadic-neologd>

これはmecab用ですので、次のビルドスクリプトを使って.jarファイルを作りました。

<https://github.com/kazuhira-r/kuromoji-with-mecab-neologd-buildscript>

Mavenでインストールされたのは次の2つですが

  * `com.atilika.kuromoji:kuromoji-core:0.9.0`
  * `com.atilika.kuromoji:kuromoji-ipadic:0.9.0`

IDE（IntelliJ IDEA）のProject Structureから`kuromoji-
ipadic:0.9.0`を削除して、先程ビルドスクリプトで作った.jarファイルを追加すると新しい辞書が使えます。

問題は自分のローカルの環境だけ新しい辞書するのではなく、開発チーム全体で`kuromoji-
ipadic:0.9.0`を使いたいのですが、そのやり方がわかりません。

[code]

    mvn install:install-file -Dfile=/path/to/mecab-ipadic-NEologd_kuromoji/kuromoji-with-mecab-neologd-buildscript/kuromoji-ipadic-neologd-0.9.0-20170508.jar -DgroupId=com.atilika.kuromoji -DartifactId=kuromoji-ipadic -Dversion=0.9.0 -Dpackaging=jar -DgeneratePom=true
    
[/code]

を試したところ、どうもkuromoji-coreが消えてしまったようでうまく行きませんでした。

Mavenでこのようなこと（Kuromojiはmavenで管理できるが新しい辞書は.jarファイルを自分で作り差し替えたい）をやるにはどうしたらいいか、あるいはKuromojiで同じことを試した方がいらっしゃれば、お知恵を拝借できれば幸いです。

なおプロジェクトはSVNで共有しています。

よろしくお願いします。




Mavenのインハウスリポジトリをネットワーク内に構築します。  
`pom.xml`にそのリポジトリの場所を追加することで、開発チーム全体でプロジェクト固有のJARファイルを利用できます。

インハウスリポジトリを構築するツールはいくつかあります。

  * Artifactory
  * Nexus

リポジトリを構築し、そこへJARファイルをデプロイします。  
プロジェクトメンバーは`pom.xml`に`<dependency>`を記述し、Mavenセントラルリポジトリからダウンロードする他のライブラリと同じように、インハウスリポジトリからプロジェクト固有のJARファイルをダウンロードします。

* * *

私はArtifactoryを使っています。有償版とOSS版がありますのでご注意ください。  
<https://www.jfrog.com/open-source/>  
ダウンロードして、サーバに構築します。  
<https://www.jfrog.com/confluence/display/RTF/Installing+Artifactory#InstallingArtifactory-
InstallingArtifactory>

そして、作成したJARをインハウスリポジトリにデプロイします。さまざまなデプロイ手段があります。ここではWebからデプロイします。

<http://localhost:8080/artifactory/webapp/#/artifacts/browse/tree/General/libs-
snapshot-local>

デフォルトの管理者アカウントは、Username: admin、Password: passwordです。

`localhost:8080/artifactory`は構築したものに合わせて適宜書き換えてください。libs-snapshot-
localはArtifactoryでライブラリのスナップショットをデプロイするリポジトリです。

`Deploy`ボタンを押し、JARファイルをアップロードします。完了すると、左ペインのTreeからそのJARを選択します。`Dependency
Declaration`の項目を見ると、Mavenでの記述内容があります。たとえば以下のようなものです。

[code]

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>example-library</artifactId>
        <version>0.0.1-20170511.044305-1</version>
    </dependency>
    
[/code]

これを`pom.xml`に追加します。  
最後に、`pom.xml`にインハウスリポジトリの場所を記述します。

[code]

    <repository>
        <id>artifactory</id>
        <name>In-house Maven2 Repository</name>
        <url>http://localhost:8080/artifactory/libs-snapshot-local/</url>
    </repository>
    
[/code]

これで各メンバーの環境で`mvn compile`などをすると、インハウスリポジトリからJARファイルをダウンロードできます。

プロキシがある場合は、構築したサーバはsetting.xmlのプロキシ設定でnonProxyHostsに追加してください。

別の観点で、今後プロジェクトで構築した辞書を使うと思いますので、kuromoji-ipadicは依存から削除してよさそうです。

[code]

    <dependency>
      <groupId>com.atilika.kuromoji</groupId>
      <artifactId>kuromoji-ipadic</artifactId>
      <version>0.9.0</version>
    </dependency>
    
[/code]

は削除し、代わりにcoreだけを依存に書けばよいのではないでしょうか。

[code]

    <dependency>
        <groupId>com.atilika.kuromoji</groupId>
        <artifactId>kuromoji-core</artifactId>
        <version>0.9.0</version>
    </dependency>
    
[/code]

* * *

この例ではWebからデプロイしましたが、JARとなるライブラリの方の`pom.xml`を変えれば、`mvn
deploy`でArtifactoryに直接デプロイすることもできます。

[code]

    <distributionManagement>
        <snapshotRepository>
            <id>snapshots</id>
            <name>example-snapshots</name>
            <url>http://localhost:8080/artifactory/libs-snapshot-local</url>
        </snapshotRepository>
    </distributionManagement>
    
[/code]

これは、以下のURLで`Set Me Up`ボタンを押し、`Virtual Repository Associations`のリンクを押しても確認できます。  
<http://localhost:8080/artifactory/webapp/#/artifacts/browse/tree/General/libs-
snapshot-local>




Mavenのインハウスリポジトリをネットワーク内に構築します。  
`pom.xml`にそのリポジトリの場所を追加することで、開発チーム全体でプロジェクト固有のJARファイルを利用できます。

インハウスリポジトリを構築するツールはいくつかあります。

  * Artifactory
  * Nexus

リポジトリを構築し、そこへJARファイルをデプロイします。  
プロジェクトメンバーは`pom.xml`に`<dependency>`を記述し、Mavenセントラルリポジトリからダウンロードする他のライブラリと同じように、インハウスリポジトリからプロジェクト固有のJARファイルをダウンロードします。

* * *

私はArtifactoryを使っています。有償版とOSS版がありますのでご注意ください。  
<https://www.jfrog.com/open-source/>  
ダウンロードして、サーバに構築します。  
<https://www.jfrog.com/confluence/display/RTF/Installing+Artifactory#InstallingArtifactory-
InstallingArtifactory>

そして、作成したJARをインハウスリポジトリにデプロイします。さまざまなデプロイ手段があります。ここではWebからデプロイします。

<http://localhost:8080/artifactory/webapp/#/artifacts/browse/tree/General/libs-
snapshot-local>

デフォルトの管理者アカウントは、Username: admin、Password: passwordです。

`localhost:8080/artifactory`は構築したものに合わせて適宜書き換えてください。libs-snapshot-
localはArtifactoryでライブラリのスナップショットをデプロイするリポジトリです。

`Deploy`ボタンを押し、JARファイルをアップロードします。完了すると、左ペインのTreeからそのJARを選択します。`Dependency
Declaration`の項目を見ると、Mavenでの記述内容があります。たとえば以下のようなものです。

[code]

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>example-library</artifactId>
        <version>0.0.1-20170511.044305-1</version>
    </dependency>
    
[/code]

これを`pom.xml`に追加します。  
最後に、`pom.xml`にインハウスリポジトリの場所を記述します。

[code]

    <repository>
        <id>artifactory</id>
        <name>In-house Maven2 Repository</name>
        <url>http://localhost:8080/artifactory/libs-snapshot-local/</url>
    </repository>
    
[/code]

これで各メンバーの環境で`mvn compile`などをすると、インハウスリポジトリからJARファイルをダウンロードできます。

プロキシがある場合は、構築したサーバはsetting.xmlのプロキシ設定でnonProxyHostsに追加してください。

別の観点で、今後プロジェクトで構築した辞書を使うと思いますので、kuromoji-ipadicは依存から削除してよさそうです。

[code]

    <dependency>
      <groupId>com.atilika.kuromoji</groupId>
      <artifactId>kuromoji-ipadic</artifactId>
      <version>0.9.0</version>
    </dependency>
    
[/code]

は削除し、代わりにcoreだけを依存に書けばよいのではないでしょうか。

[code]

    <dependency>
        <groupId>com.atilika.kuromoji</groupId>
        <artifactId>kuromoji-core</artifactId>
        <version>0.9.0</version>
    </dependency>
    
[/code]

* * *

この例ではWebからデプロイしましたが、JARとなるライブラリの方の`pom.xml`を変えれば、`mvn
deploy`でArtifactoryに直接デプロイすることもできます。

[code]

    <distributionManagement>
        <snapshotRepository>
            <id>snapshots</id>
            <name>example-snapshots</name>
            <url>http://localhost:8080/artifactory/libs-snapshot-local</url>
        </snapshotRepository>
    </distributionManagement>
    
[/code]

これは、以下のURLで`Set Me Up`ボタンを押し、`Virtual Repository Associations`のリンクを押しても確認できます。  
<http://localhost:8080/artifactory/webapp/#/artifacts/browse/tree/General/libs-
snapshot-local>

