В настоящее время я пытаюсь перенести проект с несколькими приложениями с Ant
на Maven
.
В настоящий момент проект состоит из нескольких пакетов, создающих какое-то дерево зависимостей, без циклических зависимостей. Листья этого дерева представляют собой «прикладные» пакеты, содержащие Main
. Промежуточные узлы - это «библиотечные» пакеты, используемые другими библиотечными «пакетами» или «прикладными» пакетами.
Узлам разрешено «расти вместе» до одного узла или листа. Я выяснил, что эти пакеты, вероятно, должны быть сгруппированы в модули maven, и теперь у меня есть структура, подобная этой:
root
- lib1
- lib1A (depends on lib1)
- lib1B (depends on lib1)
- app1A (depends on lib1A)
- lib2 (depends on lib1B)
- lib2A (depends on lib2)
- lib2B (depends on lib2)
- app2 (depends on lib2A and lib2B)
- lib3 (depends on lib2A and lib2B)
- app3A (depends on lib3)
- app3B (depends on lib3)
В основном библиотека и приложение могут зависеть от одной или нескольких других библиотек.
Теперь я хотел бы иметь возможность создавать каждое приложение самостоятельно и создавать для него исполняемый jar-файл.
Теперь я пытаюсь сделать следующее:
- настроить
pom.xml
каждого app
для использования maven-assembly-plugin
для создания исполняемого файла jar. - Сборка каждого необходимого модуля для определенного приложения.
- Сборка модуля приложения, что приводит кисполняемый файл jar.
Таким образом, сборка для app2
будет строить lib1
, lib1A
и lib1B
, lib2
, lib2A
и lib2B
и, наконец, app2
.
Однако, чтобы автоматизировать сборку, мне нужно было бы создать скрипт сборки для каждого приложения, который позаботится о создании всех необходимых зависимостей, что maven уже должен сделать сам.
Кроме того, если я хочу собратьнесколько приложений одновременно, мне нужно будет собрать всеl библиотеки несколько раз, или отслеживание уже собранных модулей самостоятельно.
Поскольку я новичок в maven, я не уверен, что это правильный способ управления таким многозадачным проектом.
Поэтому я прошунесколько советов о том, как правильно управлять этим вариантом использования.
РЕДАКТИРОВАТЬ:
Чтобы уточнить, что я хотел бы иметь возможность сделать:
- buildодно приложение со своими зависимостями, без создания всех приложений (работает maven на родительском pom).
- создает несколько приложений (не всех) со своими зависимостями, без многократного построения зависимостей.