【问题标题】:Syncing web project dependencies maven -> eclipse同步 web 项目依赖 maven -> eclipse
【发布时间】:2009-01-08 09:21:09
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: eclipse maven-2


    【解决方案1】:

    我发现任何时候更新项目的 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 项目并破坏一堆配置。

    【讨论】:

    • 谢谢。你到底是什么意思说'运行m2eclipse'?现在我已经摆脱了只运行mvn eclipse:eclipse -Dwtpversion=2.0,但我真的想更深入地了解这个主题。
    • 感谢编辑,它基本上为我提供了一个方向:创建一个 Eclipse 项目,自定义它的所有“性质”。创建一个空白的 mvn eclipse:eclipse proj。比较 pom.xml 以便 mvn eclipse:eclipse 将生成完全相同的一堆 eclipse 配置文件。虽然丑。
    • 是的!确切地。这是非常丑陋的。我们尝试了几个 Maven 插件,这是“最好的”,但它绝对是一个 PITA。在某些安装中(尤其是我的),它可能会丢失 J2EE 模块依赖项,并且需要做很多工作才能使其正确发布它们。希望你不会遇到这种情况。
    【解决方案2】:

    我找到了其他解决方案。就我而言,有 WAR 依赖于一些 JAR。一些 JAR 来自依赖项目(并且它们已部署),而一些只是简单的依赖项(hibernate、spring 等)。

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

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

    我的 Eclipse 是 3.6M4,m2eclipse 是 0.9.9.200912160759。

    【讨论】:

      猜你喜欢
      • 2011-04-15
      • 2011-01-08
      • 2010-12-14
      • 2018-10-28
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多