2011-01-10 4 views
12

私はJNLP APIが必要なプロジェクトを持っています。私はMaven Central上でそのアーティファクトを見つけられなかったので、私はそれを私のpomに提供する外部リポジトリを追加しました。そのリポジトリは今週末にオフラインになりました。このようなことが私に起こったのは今回が2回目です。Maven ProjectでJNLP APIをバンドルする方法

私は、これはMavenの約ないあるものほとんどですけど、本当に私はちょうど小さなJNLP-API-1.5.0.jarファイルということは、私のSCM(Iドン」は、

  1. になりたいです1つの依存関係のためだけに自分のMavenリポジトリをロールしたい)。
  2. プロジェクトのビルド時のコンパイルスコープ内。

これを達成するためにはどのノブを回す必要がありますか?

答えて

15

JDK 7.0では、JREのlibディレクトリにあるjavaws.jarファイルによってJNLP APIが提供されています(${java.home}/lib/javaws.jar)。依存関係スコープsystemを使用することができます。

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>javax.jnlp</groupId> 
     <artifactId>jnlp-api</artifactId> 
     <version>7.0</version> 
     <scope>system</scope> 
     <systemPath>${java.home}/lib/javaws.jar</systemPath> 
    </dependency> 
    </dependencies> 
    ... 
</project> 
+1

今私は /src/libs/jnlp-api-1.5.0.jar ' $ {BASEDIR}を持っている'、それは魔法のように動作します。ハドソンでさえそれが好きです。ありがとう! – Waldheinz

+0

Macの場合、JDK 1.6は$ {java.home} /lib/javaws.jarにjnlpクラスを格納しています。 – Kane

+0

これはOracle JDKでのみ機能するようです。 Waldheinzのようなローカルパスを使用することはあるプロジェクトではうまくいくかもしれませんが、それが別のプロジェクトの依存関係であれば、もう有効ではないかもしれません。 – javydreamercsw

4

install-fileのmaven-install-pluginの目標を使用してJARをローカルリポジトリに配置し、POMで通常どおりに参照することができます。コマンドは次のようになります。

mvn install:install-file -Dfile=/path/to/jnlp-api-1.5.0.jar -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=1.5.0 -Dpackaging=<packaging> 

このコマンドをスクリプトに置き、SCMにチェックインします。そうすれば、あなた(そしてこのプロジェクトで作業している他の人)はローカルリポジトリに簡単にインストールできます。

関連する問題