web-dev-qa-db-ja.com

Mavenプロジェクトにローカルjarファイルを含める方法

いくつかのjarをMavenリポジトリー(ローカル/リモートの両方)にインストールしたくありません。特に、いくつかのjarファイルがあります

c:\work\projects\myapp\src\main\webapp\WEB-INF\lib\test.jar

c:\work\projects\myapp\src\main\webapp\WEB-INF\lib\test2.jar

NetBeansで開く/編集するときに、プロジェクトにそれらを含める方法

23
cometta

これらの2つのJARを system依存関係 として追加することを検討しましたか?例えば。、

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>Sun.jdk</groupId>
      <artifactId>tools</artifactId>
      <version>1.5.0</version>
      <scope>system</scope>
      <systemPath>${Java.home}/../lib/tools.jar</systemPath>
    </dependency>
  </dependencies>
  ...
</project>

単なる一言ですが、これは推奨されておらず、非常に控えめに使用する必要があります。

22
The Alchemist

SystemPath参照を使用することはできますが、ローカルリポジトリを作成することをお勧めします。そして幸いなことに、それは簡単です。

パブリックリポジトリでは利用できないjarを保持するローカルリポジトリの作成

注:私はEclipseを使用しているため、一部の指示はEclipseに固有のものです。ほとんどは簡単に一般化できます。


仮定

  • Jarは、Mavenによって次の別のプロジェクトで作成されました...

    <groupId>com.foo</groupId>
    <artifactId>test</artifactId>
    <version>0.1.1</version>
    <packaging>jar</packaging>
    

Project(jarにアクセスしたい)

  • プロジェクトのベースディレクトリのすぐ下にリポジトリディレクトリを作成します
  • ローカルでアクセスされる各jarについて...
    • groupIDの各レベルにディレクトリを追加します(例:/ repo/ com/foo
    • バージョンなしのjar名(別名artifactId)を追加します(例:/ repo/com/foo/テスト
    • jarのバージョンのディレクトリを追加します(例:/ repo/com/foo/test/0.1.1
    • jarをそのディレクトリに置きます(例:/repo/com/foo/test/0.1.1/test-0.1.1.jar

Pom.xml内(jarにアクセスするプロジェクト用)

  • ローカルリポジトリを定義する

    <repositories>
      <repository>
        <id>data-local</id>
        <name>data</name>
        <url>file://${project.basedir}/repo</url>
      </repository>
    </repositories>
    
  • ローカルjarに依存関係を追加します。上記の例から、これは...

    <dependency>
      <groupId>com.foo</groupId>
      <artifactId>test</artifactId>
      <version>0.1.1</version>
    </dependency>
    

再構築

  • Rtクリックpom.xml->実行-> Mavenビルド
44
E L Rayle

以前は、プロジェクト自体に「ローカル」リポジトリディレクトリツリーを作成し、プロジェクト相対パスでローカルリポジトリを宣言することでPOMでそれを参照することでこれを行ってきました。

しかし、それはハックです。 (たぶんそれほどハックではない-@Pascalのコメントによる。私は1年ほど使用しているにもかかわらず、まだMaven初心者です。)

13
Stephen C

他の答えはどれも私にとってはうまくいきませんでした。私はわずかに異なるコマンドを実行する必要がありました...

mvn deploy:deploy-file -Durl=file:///path/to/yourproject/repo/ -Dfile=mylib-1.0.jar -DgroupId=com.example -DartifactId=mylib -Dpackaging=jar -Dversion=1.0

この記事の完全な手順を参照してください: https://devcenter.heroku.com/articles/local-maven-dependencies

7
Eric