問題
デフォルトでは、EclipseでTomcatサーバーインスタンスを起動すると、プロジェクトの依存ライブラリはEclipseのTomcatプラグインライブラリフォルダ ‘WEB-INF/lib’に正しく展開されません。 Maven ”
mvn eclipse:eclipse
“コマンドで生成されたこの ”
.classpath
“ファイルを参照してください。
<classpath>
<classpathentry kind="src" path="src/main/java" including="** ** /** .java"/>
<classpathentry kind="src" path="src/main/resources" excluding="** ** /** .java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="var"
path="M2__REPO/org/apache/struts/struts-core/1.3.10/struts-core-1.3.10.jar"/>
<classpathentry kind="var"
path="M2__REPO/org/apache/struts/struts-taglib/1.3.10/struts-taglib-1.3.10.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE__CONTAINER"/>
</classpath>
以下のTomcatプラグインフォルダを参照してください。依存関係ライブラリは展開されていません。
$ workspace
folder \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ StrutsExample__
解決策
私が知っているように、2つの解決策があります:
1. Java EE依存モジュール
Eclipse IDEでプロジェクトを右クリックし、プロパティをクリックして
Java EEモジュールの依存関係
を選択し、プロジェクト依存ライブラリをすべて確認します。
対応する ”
attributes
“タグを追加して、Eclipseのクラスパス(
.classpath
)を更新します
<classpath>
<classpathentry kind="src" path="src/main/java" including="** ** /** .java"/>
<classpathentry kind="src" path="src/main/resources" excluding="** ** /** .java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="var"
path="M2__REPO/org/apache/struts/struts-core/1.3.10/struts-core-1.3.10.jar" >
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="var"
path="M2__REPO/org/apache/struts/struts-taglib/1.3.10/struts-taglib-1.3.10.jar" >
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE__CONTAINER"/>
</classpath>
Tomcatプラグインフォルダを再度参照してください。すべての依存関係ライブラリは、 “WEB-INF/lib”フォルダに正しく展開されています。
$ workspace
folder \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ StrutsExample__
2. WTPのサポート
あるいは、次のコマンドを発行してMavenがEclipse WTPツールをサポートできるようにすることもできます。
mvn eclipse:eclipse -Dwtpversion=2.0
上記のコマンドは、プロジェクトの ”
.settings
“フォルダの下に ”
org.eclipse.wst.common.component
“という名前の新しいファイルを生成します。
<project-modules id="moduleCoreId" project-version="2.0">
<wb-module deploy-name="StrutsExample">
<property name="context-root" value="StrutsExample"/>
<wb-resource deploy-path="/" source-path="src/main/webapp"/>
<property name="java-output-path" value="/target/classes"/>
<dependent-module archiveName="struts-core-1.3.10.jar" deploy-path="/WEB-INF/lib"
handle="module:/classpath/var/M2__REPO/org/apache/struts/struts-core/1.3.10/struts-core-1.3.10.jar">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="struts-taglib-1.3.10.jar" deploy-path="/WEB-INF/lib"
handle="module:/classpath/var/M2__REPO/org/apache/struts/struts-taglib/1.3.10/struts-taglib-1.3.10.jar">
<dependency-type>uses</dependency-type>
</dependent-module>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
</wb-module>
</project-modules>
今度はサーバーを再起動すると、すべての依存関係ライブラリが自動的に “WEB-INF/lib”フォルダに展開されます。