2009-01-08 98 views
3

我已经安装了m2eclipse插件,并且没有任何问题同步pom.xml中出现的编译时依赖项。同步web项目依赖项maven - > eclipse

现在,我添加JPA + Hibernate(或其他)依赖关系,在做mvn jetty:run时,maven可以很好地捕获这些依赖关系。

问题是,Eclipse没有。所以当我从eclipse启动web应用程序时,我没有在引用的tomcat上部署额外的jar。

有没有办法将这种类型的web运行时依赖添加到Eclipse?不太喜欢手动编辑org.eclipse.wst.common.component的想法。

回答

9

我发现,无论何时您更新项目的POM,它都有助于重新运行m2eclipse,否则它将不会看到新的外部依赖项。

如果你还没有尝试运行这个,因为你添加了新的依赖项(JPA + Hibernate或其他)到你的POM中,然后给它一个镜头,看看它是否工作。

mvn clean install eclipse:clean eclipse:eclipse eclipse:m2eclipse 

请注意,执行此操作后,您可能需要刷新您的Eclipse项目以使更改生效。

它可能不需要所有这些参数的工作,但我有点加在一起,只是为了确定。您可以调整参数列表以使其适用于您。这样做可能会浪费掉你的项目的一些Eclipse偏好,所以希望你拥有了在你的POM中重建项目所需的一切。例如,我在其中一个POM中添加了一些额外的东西,以确保当使用maven重新构建eclipse项目时,springnature和springbuilder将添加到我的eclipse项目中。

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-eclipse-plugin</artifactId> 
     <configuration> 
     <additionalProjectnatures> 
      <projectnature> 
      org.springframework.ide.eclipse.core.springnature 
      </projectnature> 
      <projectnature> 
      org.eclipse.wst.common.project.facet.core.nature 
      </projectnature> 
      <projectnature> 
      org.eclipse.wst.common.modulecore.ModuleCoreNature 
      </projectnature> 
      <projectnature> 
      org.eclipse.jem.workbench.JavaEMFNature 
      </projectnature> 
     </additionalProjectnatures> 
     <additionalBuildcommands> 
      <buildcommand> 
      org.eclipse.wst.common.project.facet.core.builder 
      </buildcommand> 
      <buildcommand> 
      org.eclipse.wst.validation.validationbuilder 
      </buildcommand> 
      <buildcommand> 
      org.springframework.ide.eclipse.core.springbuilder 
      </buildcommand> 
     </additionalBuildcommands> 
     <wtpversion>1.5</wtpversion> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

最后一点被添加为警告!如果他们没有准备好运行eclipse:*命令的后果,会痛恨某人采用正在运行的Eclipse项目并销毁一堆配置。

+0

谢谢。 你的意思是说'重新运行m2eclipse'? 现在我已经逃过了`mvn eclipse:eclipse -Dwtpversion = 2.0`的运行,但真的想要更深入地理解这个主题。 – yanchenko 2009-01-08 09:53:15

0

我找到了其他解决方案。在我的情况下,有一些WAR取决于一些JAR。一些JAR来自依赖项目(并且它们被部署),有些JAR只是普通的依赖项(hibernate,spring等)。

我花了几个小时试图确定为什么来自依赖项目的JAR部署和其他 - 不。

我的解决方案是在我的WAR项目中创建WEB-INF/lib文件夹!通常你不需要它们,因为Maven2在包装阶段创建了这个库。在eclipse中这是必要的。

我的Eclipse是3.6M4,m2eclipse是0.9.9.200912160759。