Використовуйте плагін для збірки 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