Как мне реализовать зависимость от исходного кода maven между братскими проектами?

StackOverflow https://stackoverflow.com/questions/602905

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть java-проект, состоящий из 3-х подпроектов, каждый из которых генерирует артефакт .jar (и имеет зависимые элементы между ними).Кроме того, есть веб-проекты, которые зависят от первых 3 проектов и генерируют файл war.Файл war - это мой последний артефакт, т.е.то, что я отправляю своим клиентам.

Кроме того, у меня есть родительский модуль, который охватывает все остальные проекты:

<modules>
    <module>../core</module>
    <module>../commons</module>
    <module>../api</module>
    <module>../web</module>
</modules>

Я генерирую файлы eclipse (mvn eclipse: eclipse) и работаю с eclipse.Проблема в том, что если я изменяю один из не-веб-проектов, я должен вручную установить его перед развертыванием веб-проекта в моем веб-контейнере.Как я могу сделать так, чтобы веб-проект напрямую зависел от исходного кода других, а не от версии, установленной в репозитории?

Это было полезно?

Решение

В свойствах вашего веб-приложения (щелкните правой кнопкой мыши на проекте в проводнике пакетов, затем "свойства") добавьте три модуля (core, commons и api) в "Зависимости модулей J2EE" (остальные модули должны быть открыты в рабочей области Eclipse).

Другие советы

Вы хотите добавить зависимость от исходных файлов jar, развернутых в репозитории?

Если это так, вы можете сделать это, добавив источники классификатор зависимости.Видишь этот ответ для получения более подробной информации.

Если нет, не могли бы вы пояснить подробнее, пожалуйста.

Я думаю, ваша проблема в том, что вы просто создаете проект war.Если вы создаете его из командной строки, то вам нужно создать родительский модуль."mvn package" в каталоге, содержащем родительский модуль, должно быть достаточно.Конечно, это означает, что вам нужно создавать все пакеты каждый раз, но именно так работает maven.

Цель dependency: tree сама по себе будет искать информацию в репозитории, а не в реакторе.Вы можете обойти это, установив mvn, как предлагалось ранее, или выполнив что-то менее обременительное, вызывающее реактор, например

зависимость компиляции mvn:дерево

У меня это работает.

Редактировать:О!Опубликовал этот ответ на неправильный вопрос.Должен был отвечать это

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top