2015-12-10 5 views
1

У меня есть веб-приложение с весной и maven. Приложение разделено на модули maven. У меня есть модуль «application-web», который генерирует войну. Другой модуль «приложение-ухо», создающий ухо. И еще одно «приложение-статическое» с css, js и изображениями, которые генерируют zip-файл.Модуль Maven для статических файлов

Это будет набросок моего приложения:

  • применение
    • приложения Web (Java-код)
    • приложение уха
    • приложения статическими (CSS, JS и изображения)
    • Заявочные ресурсы (языковые характеристики)

Я хочу развернуть файлы использования eclipse из «статического» модуля, вместо того, чтобы использовать файлы в каталоге «application/src/main/webapp». Как я могу это сделать? Возможно?

+2

Почему вы перемещаете css/js и изображения в приложение-static вместо непосредственно в веб-модуль приложения? – khmarbaise

+0

Это спецификации проекта. Модуль для статических файлов, один для сообщений о интернационализации и другой для настроек файлов конфигурации. – oscar

+0

Это работает, но у меня другая проблема. – oscar

ответ

1

Не тратьте время распаковки ресурсов, все работает из коробки:

  1. расслоения ресурса: всегда загружаются из пути к классам, regardlessly она взорвалась (WEB-INF/classes) или сжатый (WEB-INF/lib)
  2. Обслуживание статических ресурсов: объединить их в JAR и использовать функцию Tomcat (Servlet 3.0) для обслуживания от META-INF/resources, см. here или использовать элемент Spring от mvc:resources.

Просто добавьте фрагменты зависимостей в вашу WAR POM, и все сделано.

+0

У меня есть приложение-static dependecy в приложении-web pom и удаляем сборку сборки.Я удаляю статические файлы каталога src/main/webapp. Как получить статические файлы с помощью mvc: resources? Прежде чем использовать , потому что файлы были в приложении-web-модуле. – oscar

+0

@oscar 'location' использует пути ресурсов по умолчанию, применяемые весной. I.e., так как вы находитесь в сетевом расположении по умолчанию, разрешены агенты Webapp, чтобы получить ресурсы из JAR, используйте 'classpath:/assets /'. –

+0

Не работая для меня, приложение-статический модуль генерирует zip, а не банку. Для развертывания в eclipse статические файлы не найдены. Внутри приложения-web war не обнаружены zip-файлы или статические файлы. – oscar

0

Вы можете использовать плагин Maven зависимостей, чтобы распаковать ваши статические ресурсы включены в файл почтового индекса, используя следующие:

В прикладном-web.pom

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack-resources</id> 
      <goals> 
       <goal>unpack-dependencies</goal> 
      </goals> 
      <phase>generate-sources</phase> 
      <configuration> 
       <outputDirectory>resources</outputDirectory> 
       <includeArtifactIds>application-static</includeArtifactIds> 
       <includeGroupIds>your group id</includeGroupIds> 
       <includes>**/*.js,**/*.css</includes> 
      </configuration> 
     </execution> 
    </executions> 
</plugin 
+0

Я уже это сделал. У меня есть zip-файл. Но я не знаю, как поместить zip-файл в приложение-сеть, чтобы использовать его. Это первый раз, когда я делаю что-то подобное. – oscar

+0

Я понимаю, что вы имеете в виду. Вы можете использовать плагин maven-dependency, как указано выше. – Taf

+0

Спасибо, похоже, хорошее решение. Завтра я попробую и обсужу результаты – oscar

0

Эта работа:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.10</version> 
      <executions> 
       <execution> 
        <id>unpack-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>unpack-dependencies</goal> 
        </goals> 
        <configuration> 
         <excludeTypes>pom</excludeTypes> 
         <includeArtifactIds>application-static</includeArtifactIds> 
         <includeGroupIds>com.foo.foo.application</includeGroupIds> 
         <outputDirectory>src/main/webapp</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
    <finalName>${project.artifactId}-${project.version}</finalName> 
</build> 

Но у меня есть еще одна проблема, при этом это решение копирует только статические файлы, когда я выполняю чистый пакет. Если я запустил приложение-сеть с eclipse, и я вношу изменения в файл js в приложении-static, изменения не действуют, пока я не выполню чистый пакет. Любое решение для этого?

Смежные вопросы