3

私は、Eclipse 3.7、Tomcat 6、および Maven 2 を使用するプロジェクトに取り組んでいます。このプロジェクトには、jsp-api.jar および serlet-api.jar への依存関係があります。ただし、これら 2 つの jar は、Tomcat 6 の jar と競合するため、Tomcat 6 へのデプロイから除外する必要があります。したがって、開発段階ではそれらが必要であり、展開段階では必要ありません。そして、この要件を自動的に実装したいと考えています。私には2つの解決策がありますが、どちらも私の要件を満たすことはできません:

  1. pom に依存関係を追加し、デプロイ中にこれら 2 つの jar を追加して除外します。

     <plugin>
       <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <packagingExcludes>WEB-INF/lib/servlet-api-2.4.jar,WEB-INF/lib/jsp-api-2.1.jar</packagingExcludes>
        </configuration>
     </plugin>
    

    maven-war-plugin は、mvn packageゴール中に指定されたファイルを war ファイルにパッキングすることを防ぎます。しかし、開発中に Eclipse で tomcat を使用する場合、プロジェクトを再公開するたびに、これら 2 つの jar を tomcat 作業スペースから手動で削除する必要があります。

  2. それらを pom 依存関係から削除し、Tomcat 6 サーバー ランタイム ライブラリを Eclipse に追加します。この場合、開発は問題ありませんが、pom ファイルに 2 つの依存関係がないため、maven でパッケージ化できません。

Maven に「Tomcat 6 サーバー ランタイム ライブラリ」を追加して、これら 2 つの jar がプロジェクトの lib ディレクトリにコピーされず、コンパイラが依存関係を見つけることができるようにするにはどうすればよいですか?

4

1 に答える 1

6

「提供された」スコープを依存関係に追加するだけです。

例:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>2.4</version>
  <scope>provided</scope>
</dependency>
于 2013-02-20T12:31:24.120 に答える