Вопрос о веб-ресурсах Maven - PullRequest
       18

Вопрос о веб-ресурсах Maven

6 голосов
/ 09 сентября 2011

У меня есть веб-проект Maven, и у меня есть несколько файлов CSS и Javascript в папке src \ main \ webapp \. Я постоянно делаю изменения в этих файлах и хотел бы увидеть свои изменения быстро. Если я запускаю maven install , это занимает много времени из-за зависимостей проекта. Иногда все, что я хочу изменить, - это одна строка кода в моем файле CSS, и я не хочу перекомпилировать все остальное. У меня есть плагин maven, который публикует мой выходной файл war для моего экземпляра JBoss. В идеале я хотел бы запустить сценарий выполнения maven, который быстро скопирует мои веб-ресурсы в выходную папку и повторно развернет измененный файл war без перекомпиляции всего остального.

Я попытался вызвать цель generate-resources , но, похоже, она не выглядит в каталоге src \ main \ webapp, поскольку она ожидает, что мои ресурсы будут находиться в папке src \ main \ resources. Что мне здесь не хватает?

Спасибо

Ответы [ 2 ]

5 голосов
/ 09 сентября 2011

Если вы хотите добавить больше ресурсов для копирования во время плагина generate-resources, вы можете изменить папки ресурсов, используемые вашей сборкой.Свойство project.build.resources определяет, какие папки будут искать ресурсы.Вы можете добавить:

<project>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>src/main/webApp</directory>
        <includes>
          <include>*.css</include>
          <include>*.js</include>

Затем вы запустите mvn resources, чтобы скопировать файлы.

Этот подход заключается в том, что эти файлы всегда будут копироваться на этапе ресурсов любой сборки.Вы можете обойти это, используя цель copy-resources вместо ресурсов.В этом случае вы должны использовать следующую конфигурацию:

<build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.5</version>
        <executions>
          <execution>
            <id>copy-web-resources</id>
            <!-- here the phase you need -->
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/webApp</outputDirectory>
              <resources> 
                <resource>
                 <directory>src/main/webApp</directory>
                 <includes>
                   <include>*.css</include>
                   <include>*.js</include>

Затем вы можете запустить mvn resources:copy-resources для копирования файлов.

2 голосов
/ 09 сентября 2011

Я думаю, что вы могли бы достичь этого, используя цель war:war. Это должно сгенерировать файл war в выходной папке для вас без повторной компиляции источника.

...