- В моем проекте у меня разные модули.
- Каждый модуль имеет pom.xml, в котором упаковка является банкой.
- И каждый pom относится к общему родителю.
-  В родительском модуле есть также pom.xml, который включает в себя все модули. Но когда я попытался сделать упаковку в pom.xml родительского модуля, он показывает ошибку "Ошибка упаковки". Проект агрегатора нужен pom как упаковка ". Я хочу сделать исполняемую банку приложения из maven так, каково решение этой проблемы или есть какое-либо другое решение. 
Упаковочная банка недействительна. Проект агрегатора нужен пом в качестве упаковки
Ответ 1
Чтобы сделать вещи короткими: если в проекте родительского агрегатора нет исходного кода (и это хорошая практика), просто добавьте это в свой родительский pom.xml:
<packaging>pom</packaging>
Если родительский проект содержит исходный код, я настоятельно рекомендую вам:
-  переместите этот код в новый модуль (позвоните ему commons)
-  make commonsдочерний модуль вашего родительского проекта
-  добавить модуль commonsв качестве зависимости от всех других модулей, требующих его (возможно, всех)
-  добавить <packaging>pom</packaging>в родительский pom.xml
Ответ 2
Maven требует, чтобы родительский элемент был packaging pom.
Вы можете создать проект pom, как если бы это был проект jar, включив кучу выполнения плагинов и связав их с последующей фазой жизненного цикла. Это не счастливая дорога. Напротив, следующее.
С объектно-ориентированной точки зрения, что вам нужно? У вас есть один объект, состоящий из кучи других объектов, не так ли? Другими словами, состав, в отличие от наследования.
Ваша окончательная поставка составлена из других (jar) проектов, то есть другие проекты зависят от проекта окончательной доставки. Вы определяете другие проекты как dependency, чтобы каждый, кто использует вашу окончательную поставку, знал, какие (транзитивные) зависимости получить. В качестве альтернативы окончательная поставка jar может быть упакована как  "uber- jar"  и, следовательно, содержать все ее зависимости. Это действительно зависит от того, как будет использоваться окончательная поставка.
В то же время могут существовать следующие два аспекта (возможно):
-  Родительский проект (который отличается от проекта окончательной доставки, на самом деле он также может быть родителем проекта окончательной доставки) определяет общие черты между его последующими дочерними элементами, как и следовало ожидать от наследования. Ребенок - это любой проект, который ссылается на родителя через конфигурацию parentв POM.
-  Проект, который определяет modules, который должен быть легко построен за один раз. Модули - это проекты, на которые ссылается использованиеmodules.module. Обычно это (я думаю, > 99%) выполняется в родительском проекте, но не обязательно. Вы также можете добавить его в окончательный проект доставки (не влияя на наследование, потому что это, таким образом, другой зверь), но он атипичный, и я бы туда не поехал.
