2011-01-14 14 views
6

現在、Eclipse/AntからMaven/M2Eclipse/Artifactoryへのビルドプロセスを移行しています。 EclipseでWTPプロジェクトとしてWebappを使用しています。 m2eclipseでMavenに移行しました。Tomcatライブラリの依存関係をmaven POMに設定する

コンパイルはEclipse IDEから正常に実行されます。しかし

、私はMavenのCLIから(mvn clean & mvn compile)をコンパイルしようとすると、Mavenの約Tomcatの環境で提供するライブラリが見つからない文句(のような注釈-APIサーブレットAPIなど、...) 。

かなり正確に:これらの依存関係は、WTPによって、Java resources/Libraries/ApacheTomcat6として提供されています。 Mavenはそれらを認識していません。

これをビルドパスで無効にして、POMにそれぞれの依存関係を追加することができますが、Mavenがwebapp(WEB-INF/libs)に再度それらをデプロイするようになるのではないかと心配です。

「このアプリケーションは、以下のライブラリを提供して、よく知られている環境で動作します」と言いましょう。依存関係として追加できる共通のTomcat POMがありますか?

ありがとうございます。これを処理する に関して、

ラファエル

答えて

11

一つの方法は、スコープprovidedでこれらの依存関係を宣言することです。これらの依存関係は、コンパイルとテストで利用できますが、mavenによってWebアプリケーションにパッケージ化されることはありません。たとえば、

 <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.0</version> 
      <scope>provided</scope> 
     </dependency> 
+1

上記は、pomで定義する必要がある方法です。スコープを指定されたものに変更して、最終ビルドにそれらのjarファイルが含まれないようにします。 – fmucar

+1

ありがとう、TomcatがPOMプロジェクトに既に "提供されている"と表示されているすべてのライブラリを提供しているかどうか知っていますか?私はそれを依存として追加することができます。 –

+0

@RaphaelJolivetこれはきちんとしていて、これも探しています(しかし、実際Glassfishのためです)。何か見つけましたか? –

関連する問題