Как запустить Jetty, разветвленный Mojo, на невыделенной военной зависимости при наложении проекта jar?

У меня есть проект типа баночки. Этот jar является «модулем расширения», который переходит к WEB-INF/lib стороннего веб-приложения (которое доступно в общедоступном репозитории maven). В pom.xml у меня есть зависимость типа войны от этого веб-приложения.

Я хотел бы иметь возможность запускать mvn jetty:run-forked на не извлеченном файле войны (прямо из ~/.m2/repository при добавлении зависимостей проектов и артефакта jar «виртуально» в WEB-INF / lib. Это казалось проще, чем ожидалось, поскольку пристань инициализация становится довольно запутанной. В итоге я испортил исходный код Java jetty / maven, эффективно перепрограммировав инициализацию в XML. :) Наконец, взглянув на http://wiki.eclipse.org/Jetty/Zip_Exceptions_Reading_Jar_or_War_Files, впереди новые проблемы. На самом деле кажется, что запуск неразорвавшихся войн невозможен для нетривиальных веб-приложений (из-за «Файл не разрешается или несовместим с URLClassloader»).

Возможно ли это вообще с учетом текущего источника причала / maven?

Что нужно сделать, чтобы он заработал?


person Andreas Steffan    schedule 16.08.2014    source источник


Ответы (1)


Вы можете переупаковать WAR webapp со своим модулем расширения внутри и запустить его. Вам необходимо:

  1. Измените тип упаковки вашего модуля расширения на WAR, но пусть Maven по-прежнему упаковывает ваши классы в JAR (который входит в WAR) с помощью archiveClasses = true.
  2. Используйте функцию maven-war-plugin, чтобы вставить JAR-файл вашего модуля. в веб-приложении WAR.
  3. Запустите Jetty на получившейся WAR.
person Kolargol00    schedule 17.08.2014
comment
Я не могу заставить причал (9.2.2) запускать любой неразорвавшийся военный файл (для extractWAR установлено значение false). Он взрывается с File, который невозможно разрешить или несовместим с URLClassloader, потому что он, похоже, не может справиться с jar-файлами в войнах. Кроме того, что мне действительно нужно, так это скорость. Я хочу избежать извлечения и переупаковки военного файла размером 150 МБ. У вас работает extractWAR = false, когда у войны есть jar-файлы в WEB-INF / lib? - person Andreas Steffan; 17.08.2014
comment
@AndreasSteffan Одна из моих сборок дважды выполнила трюк с распаковкой / переупаковкой файла WAR размером 35 МБ. Не такой большой, как у вас, но скорость была терпимой. Я в последнее время не пробовал Jetty с неразорвавшимися WAR. Если вы можете предоставить минимальный POM, я попробую. - person Kolargol00; 18.08.2014