同步Web项目依赖关系maven - >日食

时间:2009-01-08 09:21:10

标签: eclipse maven-2

我安装了m2eclipse插件,并且同步pom.xml中出现的编译时依赖项没有问题。

现在,我添加了JPA + Hibernate(或其他)依赖项,maven在执行mvn jetty:run时可以很好地捕获。

问题是,Eclipse没有。因此,当我从eclipse启动Web应用程序时,我没有在引用的tomcat上部署那些额外的.jars。

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

2 个答案:

答案 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。