Динамический веб-проект Maven в eclipse развертывает недопустимые файлы JAR для зависимых проектов - PullRequest
1 голос
/ 15 марта 2012

У меня есть веб-проект maven, который импортирован в Eclipse.У меня есть другой проект Maven (генерирует файл JAR), от которого зависит веб-проект.

Оба эти проекта работают правильно при выполнении из командной строки.Пакет mvn создает файл war, который извлекает банку, от которой он зависит, из репозитория maven для веб-проекта.Пакет mvn создает действительный файл jar при запуске для библиотеки.

Когда я импортирую библиотеку в Eclipse, m2e распознает, что веб-проект зависит от библиотеки, и обновляет части проекта, чтобы использовать тот факт, чтооба проекта maven размещаются в одном рабочем пространстве Eclipse.В разделе «Зависимости Maven» вкладки «Библиотеки» предпочтения «Путь сборки Java» для веб-проекта удаляется файл jar библиотеки и заменяется на проект библиотеки.Поскольку библиотека обновляется в Eclipse, веб-проект распознает эти изменения без необходимости устанавливать / развертывать библиотеку.

Проблема возникает, когда я пытаюсь запустить веб-приложение в Eclipse.Поскольку Eclipse фактически строит веб-проект на основе версии библиотеки в Eclipse, он не развертывает файл библиотеки из репозитория maven, он создает новый файл jar, который представляет собой снимок текущей версии библиотеки в Eclipse.Все это в целом хорошо сработало для меня, но в проекте, над которым я сейчас работаю, есть проблема с файлом jar, который создает Eclipse.Вместо того, чтобы вставлять файлы классов для библиотеки, кажется, что она берет каталог «src» моего проекта Maven и архивирует его как файл jar.Содержимое файла jar выглядит примерно так:

-main
  -java
    -com
      -... *.java
  -resources
    -...
-test
  -java
    -com
      -... *.java

Где я ожидаю, что оно будет выглядеть примерно так:

-com
  -... *.class

Поскольку я успешно использовал этот тип проекта ранее, яя пытаюсь выяснить, есть ли что-то, что мне нужно настроить, или я только что столкнулся с ошибкой.

Я использую последнее обновление m2e (1.0.200.20111228-1245) на Eclipse Indigo (Идентификатор сборки: 20120216-1857).

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

Вот решение, которое я придумала.

Похоже, что в моем случае правила "Сборка развертывания" для проекта библиотеки все еще соблюдаются.

Чтобы изменить его, перейдитев свойствах библиотеки-> Deployment Assembly

В моем случае это просто отображение из '/ src' -> '/'.Я удалил эту запись и заменил ее отображением из '/ target / classes' -> '/' и '/ src / main / resources' -> '/'.

Когда у меня было это отображение, когда был развернут jar-файл, он содержал именно то, что я настроил в Deployment Assembly.Это позволяет продолжать использовать Eclipse без явной повторной публикации библиотеки для каждого изменения.Но, по-видимому, автоматическое повторное развертывание tomcat для меня не происходит при обновлении библиотеки - мне все еще нужно вручную перезапустить tomcat, чтобы изменения в библиотеке были отражены.

Мне все еще не совсем ясно, что происходитна этом проекте.У меня есть предыдущие проекты, которые имеют похожую структуру, и в этих проектах сборка развертывания не была обновлена ​​для явного включения файлов классов, и, тем не менее, правильный файл JAR все еще развернут.

3 голосов
/ 15 марта 2012

В Eclipse мы можем отключить « Разрешение рабочей области », чтобы он использовал наши зависимости напрямую из локального репозитория maven, выполнив следующие шаги:

Отключить разрешение рабочей области

  1. Щелкните правой кнопкой мыши проект внутри затмения
  2. Выберите «Maven» из контекстного меню.
  3. Если отображается «Отключить разрешение рабочей области», что означает, что он включен. Мы нажимаем на него с целью отключить его. Обратите внимание, что после этого будет отображаться «Включить разрешение рабочей области», что означает, что мы уже отключены.

Возможно, нам потребуется обновить конфигурацию проекта и другие связанные зависимости, выполнив следующие действия: -

Обновить конфигурацию проекта

  1. Щелкните правой кнопкой мыши проект внутри затмения
  2. Выберите «Maven» из контекстного меню.
  3. Нажмите « Обновить конфигурацию проекта ... »
  4. Появятся окна « Обновление Maven Dependencies ».
  5. Выберите нужные проекты и нажмите «ОК».

Обновление зависимостей

  1. Щелкните правой кнопкой мыши проект внутри затмения
  2. Выберите «Maven» из контекстного меню.
  3. Нажмите «* Обновить зависимости»
  4. Появятся окна « Обновление Maven Dependencies ».
  5. Выберите нужные проекты и нажмите «ОК».

Пожалуйста, обратите внимание, поскольку мы больше не используем связанные зависимости непосредственно из рабочей области, он будет использоваться напрямую из нашего локального репозитория maven. Затем все связанные артефакты должны быть установлены в нашем локальном хранилище maven с помощью следующей командной строки.

mvn install

В любом случае это можно сделать с помощью контекстного меню в Eclipse, выполнив следующие действия: -

  1. Щелкните правой кнопкой мыши проект внутри затмения
  2. Выберите " Запуск от имени " ---> " Установка Maven ".
...