我安装了m2eclipse插件,并且同步pom.xml中出现的编译时依赖项没有问题。
现在,我添加了JPA + Hibernate(或其他)依赖项,maven在执行mvn jetty:run
时可以很好地捕获。
问题是,Eclipse没有。因此,当我从eclipse启动Web应用程序时,我没有在引用的tomcat上部署那些额外的.jars。
有没有办法将这种Web运行时依赖项添加到Eclipse?不太喜欢手动编辑org.eclipse.wst.common.component的想法。
答案 0 :(得分:9)
我发现每次更新项目的POM都会有助于重新运行m2eclipse,否则它将无法看到新的外部依赖项。
如果您没有尝试运行此项,因为您已将新的依赖项(JPA + Hibernate或其他)添加到POM中,请尝试一下,看看它是否有效。
mvn clean install eclipse:clean eclipse:eclipse eclipse:m2eclipse
请注意,执行此操作后,您可能需要刷新Eclipse项目才能使更改生效。
它可能不需要所有这些参数都可以工作,但我只是为了确定而在一点上添加它们。您可以调整参数列表,使其达到适合您的程度。
执行此操作可能会破坏项目的一些Eclipse首选项,因此希望您拥有在POM中重建项目所需的一切。例如,我在我的一个POM中有一堆额外的东西,以确保当maven用于重建eclipse项目时,我的eclipse项目中会添加springnature和springbuilder之类的东西。
<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项目并销毁一堆配置。
答案 1 :(得分:0)
我找到了其他解决方案。在我的情况下,WAR取决于一些JAR。一些JAR来自依赖项目(并且它们已被部署),有些只是普通的依赖项(hibernate,spring等)。
我花了几个小时试图确定为什么要部署依赖项目的JAR和其他 - 不要。
我的解决方案在我的WAR项目中创建WEB-INF / lib文件夹!通常你不需要它们,因为Maven2在包阶段创建了这个lib。在日食中,这是必要的。
我的Eclipse是3.6M4而m2eclipse是0.9.9.200912160759。