Статический контент с плагином Maven Jetty

Как я могу обслуживать статический контент с помощью плагина maven jetty (7.x)

Спасибо

2 ответа

Решение

У меня есть такая конфигурация в моем jetty.xml. Я просто хотел обновить свой вопрос.

 <Set name="handler">
     <New class="org.eclipse.jetty.server.handler.HandlerList">
        <Set name="handlers">
           <Array type="org.eclipse.jetty.server.Handler">
              <Item>
                 <New class="org.eclipse.jetty.servlet.ServletContextHandler">
                    <Set name="contextPath">/static</Set>
                    <Set name="resourceBase">${static-resources-path}</Set>
                    <Call name="addServlet">
                       <Arg>org.eclipse.jetty.servlet.DefaultServlet</Arg>
                       <Arg>/</Arg>
                    </Call>
                 </New>
              </Item>
           </Array>
        </Set>
     </New>
  </Set>

Поместите ваше статическое содержимое в любую папку ниже /yourStaticApp/src/main/webapp - скажи под /yourStaticApp/src/main/webapp/static, Когда вы запустите Jetty, они будут доступны как http://host:port/contextRoot/static/fileName.ext


Хм, не уверен, если это возможно. Плагин Eclipse Jetty Maven документирует способ настройки статического расположения источника, который сводится к альтернативному расположению webapps упомянутое выше.

 ...
 <plugin>
    ...
    <configuration>
      <webAppSourceDirectory>${basedir}/src/staticfiles</webAppSourceDirectory>
      ...
    </configuration>
    ...
  </plugin>
  ...

Как указывает документ:

- по умолчанию это значение равно ${basedir}/src/main/webapp. Если ваши статические источники находятся в другом месте, установите этот параметр соответствующим образом.

см. http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin


Обновление: при некоторых других исследованиях я узнал, что вы можете указать местоположение webdefault.xml из в Jetty-Maven плагин; а в webdefault.xml вы можете настроить расположение статического содержимого.

В конфигурации Jetty Maven укажите местоположение файла wendefault.xml.

  <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <configuration>
     ...
      <defaultsDescriptor>/my/path/to/webdefault.xml</defaultsDescriptor>
     ...
    </configuration>
  </plugin>

Теперь с webdefault.xml в вашей руке вы можете поместить конфигурацию, упомянутую здесь: http://docs.codehaus.org/display/JETTY/Static+Content - за исключением того, что имена пакетов были изменены с org.mortbay.jetty... в org.eclipse.jetty... увидеть ниже:

<Configure class="org.eclipse.jetty.servlet.Context">
  <Set name="contextPath">/javadoc</Set>
  <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/javadoc/</Set>
  <Call name="addServlet">
    <Arg>org.eclipse.jetty.servlet.DefaultServlet</Arg>
    <Arg>/</Arg>
  </Call>
</Configure>

см. http://wiki.eclipse.org/Jetty/Reference/webdefault.xml

Я не проверял / использовал выше. Но дайте мне знать, если у вас все получится. Или если что-то еще нужно, чтобы сделать это.

Это конфигурация, которая работает для меня, используя значения resourceBase и contextPath в JettyWebAppContext

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>9.4.7.v20170914</version>
    <configuration>
        <scanIntervalSeconds>60</scanIntervalSeconds>
        <webApp>
            <contextPath>/app</contextPath>
        </webApp>
        <contextHandlers>
            <contextHandler implementation="org.eclipse.jetty.maven.plugin.JettyWebAppContext">
                <contextPath>/images</contextPath>
                <resourceBase>./../../env/localhost/config/images</resourceBase>
            </contextHandler>
        </contextHandlers>
Другие вопросы по тегам