2012-03-05 11 views
3

私はいつもJettyのTomcatで手動で起動するmavenプロジェクトを起動しようとしています。このため私はmaven-jetty-pluginを使用しています。Jettyに欠けているMavenライブラリを追加するには

jetty:runを実行するときJettyがPOMで定義された依存関係を見つけられないという事実を除いて、すべてがうまくいくようです。

私がjetty:warを実行すると、戦争は依存関係を使って正しく構築されます。桟橋はなぜWEB-INF/lib(または他の場所)に私のライブラリを含めないで走っていますか?

+0

欠落依存関係の "スコープ" とは何ですか? –

+0

@BenoitCourtine、私は範囲を定義しませんでした。 –

+1

Maven 2とjetty-maven-plugin 7.5.2を使用してこの問題が発生しています。 jetty:runを使用すると、アプリケーションはClassNotFoundExceptionとNoClassDefFoundErrorを返します。私が桟橋を使用している場合:ランニング、すべての問題はありません。また、依存関係をプラグインの依存関係リストにコピーして(コンテナのクラスパス上にあるように)、jetty:runが動作します。私の依存関係は、Mavenがすでに私のローカルリポジトリにダウンロードしたサードパーティの成果物に依存しています。 なぜこのように動作するのかを知っている人からの声を聞きたいです。 – Shannon

答えて

0

実際に定義した依存関係によって異なります。たとえば、jetty.xmlファイルにJNDIリソースを定義した場合は、jetty-plusの依存関係が必要です。ただし、プラグインのみの実行にはこの依存関係が必要です。プラグインは<dependencies/>を持つことができ、それを定義する必要があります。

プラグインが見つけられないJetty固有のクラスのリストがある場合、依存関係を調べる最も良い方法はwww.jarvana.comのようなサイトを使うことです。

+0

私は桟橋の特定のクラスを使用しません。私はtomcatから移行したので、私は絶対に何も桟橋に特有のものはありません。私はjetty.xmlをhavaしていません... –

0

'依存関係'により、他のプロジェクトを意味しますか?

もしそうなら、jetty:runで表示される前に、これらをローカルリポジトリにインストール(mvn:install)する必要があります。

jetty:warはそれらをパッケージし、ローカルリポジトリにインストールすることなくlibフォルダに配置する可能性があります。

1

あなたがメインのMavenリポジトリ以外の場所に存在する桟橋の依存関係が必要な場合は、次の行を追加します。

<pluginRepositories> 
    <pluginRepository> 
     <id>repo-id</id> 
     <url>http://my_other_repo.edu</url> 
    </pluginRepository> 
</pluginRepositories> 

私は桟橋があなたのPOMの既存のリポジトリを使用するとは思いません。

0

私の場合、私のレポにはEclipseでピックアップされていない1つの.jarファイルがありました。私はEclipseでそれを修正する方法を見つけ出すませんでした、私の仕事ので、周り...

  1. は〜/下(異なるgroupIdを下レポに別のパスを.jarファイルの複製を追加しました.m2)このコマンドを使用して:

    MVNインストール:インストールファイルを-Dfile = dhcp4java-1.0.0.jar -DgroupId = a_abc.hack -DartifactId = dhcp4java -Dversion = 1.0.0 -Dpackaging =瓶

  2. 新しいgroupIdを参照してください。これは、pom.xmlの依存関係のためにこのエントリを更新するだけです。

    <のgroupId> a_abc.hack </groupIdを>

関連する問題