Eclipse + Maven - WAR导出中缺少JAR

时间:2010-12-10 18:06:08

标签: eclipse maven

项目(带有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有什么限制吗?

2 个答案:

答案 0 :(得分:3)

好的,经过几个小时后我才明白了。将JAR添加到构建路径是不够的。您还必须在Eclipse中项目的属性下将它们添加为J2EE依赖项。

答案 1 :(得分:0)

另一方面,你做错了什么。你根本不需要maven-eclipse-plugin。你也应该使用m2eclipse和m2extras。非常令人不安的是,这两个没有捆绑到一个更新站点。因此,从m2extras安装WTP扩展,您将在保存时根据您的POM获得eclipse WAR配置。根据我对maven + WTP的经验,这是一个黄金法则,你永远不应该触摸eclipse中的依赖,只需让m2为你生成它。唯一的情况是,当您需要调整它时,就像JPA等项目方面一样。