2016-04-25 4 views
1

私の開発ステーションでは、私は自分のプロジェクトがJDBCドライバを "見る"必要があります。しかし、プロジェクトをサーバーにデプロイするときに、JDBCドライバーが/ libフォルダーにあると、コンテナーが誤動作する原因になります。Maven - JDBC jarファイルの正しい範囲は?

私は.warファイルにパッケージ化したくないドライバに<scope>provided</scope>を設定しようとしましたが、プロジェクトを実行するためにIDEを取得できません。

pom.xmlでJDBCドライバを宣言するための正しい範囲はどこですか?デプロイ用にパッケージ化されていないので、開発ステーションで使用できますか? <scope>runtime</scope>?事前に

おかげで、あなたの質問のための

+0

IDEとは何ですか?おそらくあなたは、どのドライバをアプリケーションに使うべきかをIDEに伝える必要があります(そして、パッケージ化されていない、つまり提供されていないことを正しく伝えます) – ochi

+0

IDEはSpring ToolSourceです – gtludwig

答えて

2

短い答えは:あなたがprovidedスコープを使用する必要があります。

なぜわからないruntime?のは、Mavenのドキュメントを確認してみましょう:

は、これは非常にコンパイルのようなものですが、あなたはJDKまたはコンテナは、実行時に依存関係を提供することを期待を示し

を提供します。たとえば、Java Enterprise Edition用のWebアプリケーションを構築する場合、Webコンテナがこれらのクラスを提供するため、Servlet APIおよび関連するJava EE APIへの依存関係を指定されたスコープに設定します。このスコープは、コンパイルおよびテストのクラスパスでのみ使用でき、推移的ではありません。

ランタイム

このスコープは、依存関係がコンパイルに必要とされないことを示しますが、実行するためです。ランタイムとテストのクラスパスにありますが、コンパイルクラスパスにはありません。

したがって、Mavenはコンパイルのクラスパスにruntimeスコープの依存関係を公開しないことがあるため、コードで直接使用することはできません。しかし、Class.forName("class.from.runtime.Scope")のようなコードはokをコンパイルします。

あなたのIDEが押されたのはpom.xmlの変更だと思います。通常、この問題はプロジェクトの「キャッシュの消去」または「更新」/「同期」によって修正されます。これは、EclipseIDEAでこれを行う方法です。

関連する問題