Використовуйте плагін для збірки maven замість плагіна для тіней · Випуск # 133 ·

Коментарі

Копіювати посилання Цитувати відповідь

плагін

едураміба прокоментував 6 березня 2018 р

Оскільки використання плагіна maven shadow для створення жирного банку є проблематичним, оскільки він може перезаписати файли, змішуючи банки (https://product.hubspot.com/blog/the-fault-in-our-jars-why-we- stop-building-fat-jars), ми в даний час з успіхом використовуємо більш безпечний спосіб розгортання лямбда з залежностями: єдиний zip-файл із усіма банками в папці lib (як зафіксовано в https://docs.aws.amazon.com/en_en /lambda/latest/dg/create-deployment-pkg-zip-java.html)

Приклад коду того, як ми це робимо в maven:

І файл bin.xml:

Текст успішно оновлено, але виявлені такі помилки:

сапессі прокоментував 6 березня 2018 р

Дякуємо за відгук @eduramiba - мені цікаво, чи настав час створити спеціальний для Lambda плагін maven, щоб упакувати програму та максимально зменшити вихідний jar. Я буду тримати це відкритим і продумати. Я обов’язково розгляну додавання плагіна збірки як альтернативу нашим зразкам та архетипам.

людство прокоментував 7 березня 2018 р

Добре знати цей спосіб упаковки. Дякую @eduramiba !

Джухар прокоментував 21 червня 2018 р

@eduramiba Дякую! Як би ви виключили вбудований tomcat у цьому випадку?

едураміба прокоментував 21 червня 2018 р

Але якщо ваша залежність надала область дії, вона не буде скопійована, оскільки includeScope є робочим часом.

едураміба прокоментовано 21 червня 2018 р. •

Крім того, записи маніфесту jar насправді не потрібні під час виконання лямбда, оскільки він завантажує всі банки у папку lib.

Джухар прокоментовано 21 червня 2018 р. •

Я трохи змінив ваш підхід, і він також працює (вам потрібно лише налаштувати плагін збірки таким чином):

Євгенів прокоментував 26 червня 2018 р

Я спробував обидва запропоновані приклади.
Перші результати в моєму власному коді (обробнику), який буде доданий до його власної банки, а потім разом з іншими банками залежності, розміщується в "lib /" безпосередньо всередині zip.
lib/myHandler.jar
lib/dep1.jar

Другий приклад поміщає всі залежності в lib/again, але в корені zip-структури каталогу;
наприклад:
com/company/Handler.class