Pull to refresh

Сборка JS приложения с помощью Maven

Reading time3 min
Views2.1K
Разрабатывая веб-приложения с обилием JS, со временем сталкиваешься с необходимостью автоматизировать сборку и тестирование, а также построение различных отчетов, документации и т.п. Мы столкнулись с этой проблемой практически сразу после старта проекта. В силу того, что серверная часть реализована на Java, выбор с очевидностью пал на Maven. Оставалось найти плагин, который умеет работать с javascript.

Поиски были недолгими и привели на mojo.codehaus.org/javascript-maven-tools/. «То, что нужно»,- подумал я и начал прикручивать его к проекту.

Подключение плагина


Для начала настроим maven для использования плагинов из песочницы.

Подготовка проекта


Создадим проект со структурой, описанной на сайте плагина. Файл pom.xml можно взять из примера с сайта.

Настройка сборки

Добавляем в pom.xml следующую секцию:
<build>
  <outputDirectory>target/scripts</outputDirectory>
  <testOutputDirectory>target/test-scripts</testOutputDirectory>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo.javascript</groupId>
      <artifactId>javascript-maven-plugin</artifactId>
      <version>1.0-alpha-1-SNAPSHOT</version>
      <extensions>true</extensions>
      <configuration>
        <descriptor>${basedir}/src/main/assembler/solution.jsb</descriptor>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>compile</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

* This source code was highlighted with Source Code Highlighter.

Теперь на фазе компиляции плагин будет объединять файлы, указанные в solution.jsb, в один (или несколько) пакетов.

Настройка отчетов


Как обычно добавляем (или изменяем) секцию в pom.xml
<reporting>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo.javascript</groupId>
      <artifactId>javascript-report-maven-plugin</artifactId>
      <version>1.0-alpha-1-SNAPSHOT</version>
      <reportSets>
        <reportSet>
          <reports>
            <report>jsdoc</report>
            <report>jslint</report>
          </reports>
        </reportSet>
      </reportSets>
    </plugin>
  </plugins>
</reporting>

* This source code was highlighted with Source Code Highlighter.


Теперь на этапе генерации сайта (цель site) у нас будет генерироваться jsdoc, а также отчет по корректности кода (при помощь JSLint). Результат работы JSLint особенно полезен, так как позволяет устранить недочеты и ошибки в коде на раннем этапе (например, лишняя запятая в массиве очень печалит IE).

Сборка проекта


Для того, чтобы собрать проект достаточно выполнить команду mvn compile в корне проекта. После этого у нас в папке target/scripts будет собранное приложение, готовое к загрузке на сайт.

Для генерации отчетов необходимо выполнить команду mvn site. Сгенерированные отчеты можно будет найти в папке target/site


Ложка дегтя


К сожалению, данный плагин действительно находится в состоянии альфа тестирования. Но это не самое плохое. Хуже то, что плагин больше не развивается. Последняя активность датирована началом 9го года.

Бочка меда


В силу того, что данный плагин активно используется в нашем проекте, мы подготовили несколько патчей и планируем предложить их владельцу javascript-maven-tools.
PS. Слава Богу, лицензия позволяет форкать проект, поэтому в случае негативного ответа, мы обязательно воспользуемся преимуществами Apache License.
Tags:
Hubs:
Total votes 6: ↑3 and ↓30
Comments15

Articles