项目(带有Spring的标准WAR)通过mvn package
从命令行构建和打包。我还运行mvn eclipse:eclipse
来配置Eclipse项目。现在这里是奇怪的开始。
项目在Eclipse中没有错误,pom.xml中的所有依赖项都在.classpath文件和Eclipse中项目的构建路径中正确引用。但是,如果我尝试在服务器上运行项目或将项目导出为WAR,则会遗漏一个jar,一个自定义的内部JAR。
缺少jar的依赖项的pom.xml条目......
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>lib_ourlib</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
项目的.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/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar"/>
<classpathentry kind="var" path="M2_REPO/com/mycompany/lib_ourlib/1.0-SNAPSHOT/lib_ourlib-1.0-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/log4j/log4j/1_2_6/log4j-1_2_6.jar"/>
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-aop/3.0.5.RELEASE/spring-aop-3.0.5.RELEASE.jar"/>
<!-- a lot of spring jars -->
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
Eclipse为什么要拿起Spring罐而不是我们的?使用SNAPSHOT和RELEASE有什么限制吗?
答案 0 :(得分:3)
好的,经过几个小时后我才明白了。将JAR添加到构建路径是不够的。您还必须在Eclipse中项目的属性下将它们添加为J2EE依赖项。
答案 1 :(得分:0)
另一方面,你做错了什么。你根本不需要maven-eclipse-plugin。你也应该使用m2eclipse和m2extras。非常令人不安的是,这两个没有捆绑到一个更新站点。因此,从m2extras安装WTP扩展,您将在保存时根据您的POM获得eclipse WAR配置。根据我对maven + WTP的经验,这是一个黄金法则,你永远不应该触摸eclipse中的依赖,只需让m2为你生成它。唯一的情况是,当您需要调整它时,就像JPA等项目方面一样。