问题
默认情况下,在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
解
据我所知,有两种解决方案:
1. Java EE依赖模块
在Eclipse IDE中,右键单击项目,单击属性,然后选择Java EE模块依赖项,然后检查所有项目依赖项库。
通过添加相应的“ attributes ”标签,这将更新Eclipse的classpath( .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
注意
在Eclipse中,您可能需要在“服务器”选项卡中删除现有的Tomcat服务器实例,然后创建一个新的tomcat服务器实例才能生效。
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”文件夹中。
翻译自: https://mkyong.com/maven/maven-dependency-libraries-not-deploy-in-eclipse-ide/