Синхронизация зависимостей веб-проекта maven -> eclipse - PullRequest
3 голосов
/ 08 января 2009

У меня установлен плагин m2eclipse, и нет проблем с синхронизацией зависимостей времени компиляции, которые появляются в pom.xml.

Теперь я добавляю зависимость JPA + Hibernate (или что-то еще), что maven замечательно замечает при выполнении mvn jetty:run.

Проблема в том, что Затмение нет. Поэтому я не получаю эти дополнительные файлы .jar, развернутые на упомянутом tomcat, когда я запускаю веб-приложение из eclipse.

Есть ли способ добавить этот вид веб-зависимостей времени выполнения в Eclipse? Не очень нравится идея ручного редактирования org.eclipse.wst.common.component.

Ответы [ 2 ]

9 голосов
/ 08 января 2009

Я обнаружил, что каждый раз, когда вы обновляете POM проекта, он помогает перезапустить m2eclipse, иначе он не увидит новые внешние зависимости.

Если вы не пытались запустить это с тех пор, как добавили новые зависимости (JPA + Hibernate или что-то еще) в POM, попробуйте и посмотрите, работает ли он.

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

Обратите внимание, что после выполнения этого вам, вероятно, потребуется обновить проекты Eclipse, чтобы изменения вступили в силу.

Возможно, для работы могут не потребоваться все эти аргументы, но я как бы добавил их все в один момент, чтобы убедиться. Вы можете настроить список аргументов так, чтобы он работал на вас.

Это может привести к потере некоторых ваших предпочтений Eclipse для вашего проекта, так что, надеюсь, у вас есть все необходимое для перестройки вашего проекта уже в вашем POM. Например, у меня есть несколько дополнительных вещей в одном из моих POM, чтобы гарантировать, что такие вещи, как springnature и springbuilder, будут добавлены в мой проект eclipse, когда maven используется для перестройки проекта 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 голосов
/ 14 января 2010

Я нашел другое решение. В моем случае есть WAR, который зависит от некоторых JAR-файлов. Некоторые JAR-файлы происходят из зависимых проектов (и они развернуты), а некоторые являются просто обычными зависимостями (hibernate, spring и т.

Я потратил несколько часов, пытаясь определить, почему развертываются JAR из зависимых проектов, а другие - нет.

Моим решением было создать папку WEB-INF / lib в моем проекте WAR ! Обычно они вам не нужны, потому что Maven2 создает эту библиотеку во время фазы пакета. В затмении это необходимо.

Мой Eclipse - 3,6M4, а m2eclipse - 0,9,9.200912160759.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...