Поддельный ответ Гвидо (с 3 голосами!) Отнял у меня много времени. Он полон плохих советов.
Отвечая на три совета Гвидо:
- «Установите имя варфайла в теге
<build>
» — это не очень хороший совет. Вы теряете информацию о версии вашего артефакта, а переименовывать свои войны, чтобы сделать плагин развертывания счастливым, — это совершенно неправильно.
- "
<finalName>
тег" - это либо устаревшая информация, либо вопиющая дезинформация. В любом случае, это — и отсутствие документации по плагину — стоило мне значительного количества времени. Смотрите ниже реальный ответ.
- «Создайте
META-INF/context.xml
в нашем артефакте» — технически верный, но полубесполезный совет. Согласно документации Apache для Tomcat/Tomee:
Когда хост выполняет операции autoDeploy
или deployOnStartup
, имя и контекстный путь веб-приложения получаются из имени(й) файла(ов), которые определяют(ют) веб-приложение. Следовательно, контекстный путь может быть не определен в META-INF/context.xml
Если Гвидо удалит свой ответ, все вышеперечисленное может быть удалено.
Чтобы указать контекстный путь для веб-приложения в плагине tomee-maven:
<configuration>
...
<context>${artifactId}</context>
...
</configuration>
Это, например, развернет myapp-1.0.0-SNAPSHOT
как /myapp
.
Кроме того, пока я разглагольствую, я могу также сделать мир лучше и добавить то, что еще я узнал, поскольку домашняя страница tomee-maven-plugin практически не содержит информации о доступных параметрах конфигурации...
- Попробуйте запустить с
-X
, он распечатает блок XML текущей конфигурации XML. (например, "mvn tomee:run -X
и ищите "<configuration>
").
- Если вы переходите с
tomcat-maven-plugin
на tomee-maven-plugin
, вы не можете использовать любую из существующих конфигураций. Выброси это.
- Автор tomee-maven-plugin предоставляет документацию только в случайных сообщениях блога, так что смотрите там, если у вас есть проблемы или еще лучше просмотреть весь исходный код OpenEJB. Гррр...
- Если вы используете SSL-сертификаты, также мало информации о том, что нужно для запуска и работы:
Во-первых, есть недокументированный тег classpaths, который может быть вам полезен:
<classpaths>
<classpath>${someClasspath}</classpath>
</classpaths>
Во-вторых, есть недокументированный тег systemVariables
, который вы можете использовать (или вы можете использовать <args>
) для указания вашего хранилища ключей и доверенного хранилища. Ниже это выглядит очевидным, но больше нигде на самом деле не говорится, что ожидает tomee-maven-plugin, а также есть изрядное количество дезинформации (например, что любой JKS в conf будет автоматически загружен), так что вот что действительно работает:
<systemVariables>
<javax.net.ssl.trustStore>${some.path}/truststore.jks</javax.net.ssl.trustStore>
<javax.net.ssl.trustStorePassword>somePassword</javax.net.ssl.trustStorePassword>
<javax.net.ssl.keyStore>${some.path}/keystore.pkcs12</javax.net.ssl.Store>
<javax.net.ssl.keyStorePassword>somePassword</javax.net.ssl.keyStorePassword>
<javax.net.ssl.keyStoreType>someType (e.g. PKCS12)</javax.net.ssl.keyStoreType>
</systemVariables>
Надеюсь, это когда-нибудь поможет кому-то. :-)
person
inanutshellus
schedule
08.01.2016