Плагин TomEE Maven: путь развертывания

При развертывании веб-приложения с помощью модуля tomee-maven-plugin эффективный URL-адрес, на котором размещено приложение, приводит к:

http://localhost:8080/[artifactId]-[version]/

Я хотел бы установить этот относительный путь произвольно, например, например:

http://localhost:8080/myservice/

Какой параметр конфигурации в tomee-maven-plugin делает это?

Спасибо за быструю руку и с наилучшими пожеланиями

Паскаль


person Pascal Kesseli    schedule 07.06.2013    source источник


Ответы (2)


Вы, вероятно, получили этот контекстный путь, потому что это имя артефакта файла войны.

Вы можете установить finalName в pomfile:

 <build>
     <finalName>myservice</finalName>
     [ all other configuration ... ]
 </build>

Это создаст файл myservice.war. Если вы хотите просто использовать другой контекстный путь без артефакта с другим именем, вы можете указать его в конфигурации плагина.

<plugin>
  <groupId>org.apache.openejb.maven</groupId>
  <artifactId>tomee-maven-plugin</artifactId>
  <version>1.0.1</version>
  <configuration>
    <finalName>myservice</finalName>
    <warFile>point this to your warfile</warFile>
  </configuration>
</plugin>

или, в качестве альтернативы, вы можете попробовать добавить META-INF/context.xml к своему артефакту, содержащему:

<Context path="/myservice" />
person guido    schedule 07.06.2013
comment
Спасибо за ваш вклад! Я попытался запустить maven с параметром -Dtomee-plugin.finalName=codenation-service, но результирующий URL-адрес развертывания не изменился. - person Pascal Kesseli; 07.06.2013
comment
Но вещь context.xml сработала :-). Хотя я бы предпочел вариант параметра. - person Pascal Kesseli; 07.06.2013
comment
Параметр или нет особо не меняется. Поместите ${your.property} в контекстный путь и настройте ресурс как отфильтрованный. Или поместите свойство непосредственно в pomfile finalName и передайте значение в качестве параметра. В общем, кстати, я бы посоветовал не слишком полагаться на параметры и использовать профили для такого рода вещей. - person guido; 07.06.2013
comment
Спасибо, приятель, это сработало. В итоге я использовал версию с фильтрованным ресурсом. - person Pascal Kesseli; 08.06.2013
comment
добавьте ‹path›${project.build.directory}/${project.build.finalName}‹/path› в конфигурацию - person ravshansbox; 25.03.2014

Поддельный ответ Гвидо (с 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