Maven依存ライブラリはEclipse IDEにデプロイされません
問題
デフォルトでは、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”フォルダに展開されます。