создание тонкого военного файла Grails с использованием обычных банок в tomcat?

Сгенерированный военный файл Grails со всеми jar-файлами по умолчанию составляет около 30 МБ. Мне нужно уменьшить этот размер для частых тестовых развертываний в удаленном контейнере tomcat. Итак, я пытаюсь использовать общую технику tomcat libs. Процесс почему-то не работает.

вот шаги, которые я предпринимаю

1) Сначала я скопировал все файлы jar из каталога web-inf/lib в общий каталог сервера, как показано ниже.

введите здесь описание изображения

вот конфигурация /var/lib/tomcat7/conf/catalina.properties common.loader.

введите здесь описание изображения

2) Затем я настроил конфигурацию Grails следующим образом.

введите здесь описание изображения

3) Затем я создаю войну, используя > grails war --nojars

Сгенерированный военный файл весил 6,42 МБ.

4) Затем я скопировал файл войны в каталог веб-приложений tomcat.

5) Когда я захожу в веб-приложение, я получаю «Страница не может быть найдена, ошибка 404».

Я ценю любую помощь относительно того, что я делаю неправильно. Спасибо!

ОБНОВИТЬ:

Вот ошибка, зарегистрированная в catalina.out. Приложение было nojars.

введите здесь описание изображения


person kofhearts    schedule 14.05.2020    source источник
comment
Трудно сказать, чего не хватает, без какой-либо дополнительной информации, кроме знания того, что вы получаете 404. Если вы посмотрите в журналы сервера, вы можете обнаружить, что ClassNotFoundException или NoClassDefFoundError регистрируются, и если это так, эти сообщения будут указывать, какой класс (ы) не может быть найден.   -  person Jeff Scott Brown    schedule 14.05.2020
comment
@JeffScottBrown Спасибо! Я обновил сообщение выше, добавив скриншот ошибки, зарегистрированной в catalina.out. Пишет Ошибка запуска прослушивателя. Знаете ли вы, что это значит? Спасибо!   -  person kofhearts    schedule 15.05.2020
comment
@JeffScottBrown, я думаю, я просто использую Дженкинс, который быстрее. Благодарность!   -  person kofhearts    schedule 15.05.2020


Ответы (1)


Лучше всего ограничить зависимости; это можно сделать только через файл build.gradle AFAIK. Вырежьте хлам только то, что вам нужно.

Если вы знаете, что плагин предоставляется другой зависимостью, используйте 'provided'

provided 'org.grails.plugins:cache:4.0.0'
compile "org.grails.plugins:async"
provided "org.grails:grails-logging"
provided "org.grails:grails-plugin-i18n"

Кроме того, вырежьте двойные включения (например, groovy-all) и другие части, которые вам не нужны:

provided 'org.codehaus.gpars:gpars:1.2.1', {
    exclude group:'org.multiverse', module:'multiverse-core'
    exclude group:'org.codehaus.groovy', module: 'groovy-all'
}

В частности, объявите части, которые вам нужны, в вашем gradle.build и исключите части, которые вам не нужны. Вы должны быть умнее в сборке, вот и все.

person Orubel    schedule 14.05.2020
comment
В частности, объявите части, которые вам нужны, в вашем gradle.build - я думаю, что это приложение Grails 2.2. Можно было бы использовать Gradle для создания приложения Grails 2.2, но мы не предоставляем такую ​​поддержку по умолчанию, и вопрос не указывает на то, что они используют Gradle. - person Jeff Scott Brown; 14.05.2020
comment
Сгенерированный военный файл Grails со всеми jar-файлами по умолчанию составляет около 30 МБ. Мне нужно уменьшить этот размер... Gradle - это то, как это делается. У тебя есть лучший способ сделать это, Джефф? - person Orubel; 16.05.2020