私のセットアップ:jdk 7、Tomcat 7.0.29、Eclipse Juno(m2e [Maven 3.0.4組み込み]、m2eclipse-wtp)
このJSTL依存関係を持つ動的 Web プロジェクトがあります。
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.1</version>
</dependency>
Tomcatにmvn package
デプロイすると、アプリのデプロイを停止しない致命的ではないメッセージがログに記録されます。
validateJarFile(...\WEB-INF\lib\jsp-api-2.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class
validateJarFile(...\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
問題の JAR が WAR にパッケージ化されていることを確認しました。私は依存関係をチェックし、mvn dependency:tree
これを取得します:
[INFO] \- org.glassfish.web:javax.servlet.jsp.jstl:jar:1.2.1:compile
[INFO] \- javax.servlet.jsp.jstl:jstl-api:jar:1.2:compile
[INFO] +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] \- javax.servlet.jsp:jsp-api:jar:2.1:compile
両方の JAR がcompile
スコープに表示されていますが、 pom.xmlを確認すると、次のように表示されorg.glassfish.web:javax.servlet.jsp.jstl:jar:1.2.1
ます。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
それはスコープにそれらを示していますprovided
。これにより、パッケージから除外されると思いました。
質問:
- これらの JAR を含めないように WAR プラグインに指示するにはどうすればよいですか?
<excludes/>
ビルドパスからも削除されるため、カットしません。 - Servlet 3.0 仕様に基づいて開発したいが、この JSTL バージョンを維持したい場合はどうすればよいですか?