Обработка ресурсов jQuery + jQuery UI с помощью maven - PullRequest
1 голос
/ 20 марта 2012

Это моя текущая структура папок:

 .
 |-- pom.xml
 `-- src
     `-- main
         |-- java
         |   `-- ...
         |-- resources
         |   `-- messages
         |       `-- messages.properties
         |       `-- ...
         |   `-- properties
         |       `-- hibernate.properties
         |       `-- jawr.properties
         |       `-- ...
         |   `-- log4j.xml
         |   `-- tiles.xml
         `-- webapp
             |-- resources
             |   `-- css
             |       `-- ...
             |   `-- images
             |       `-- ...
             |   `-- js
             |       `-- main.js
             |-- WEB-INF
             |   `-- context
             |       `-- application.xml
             |       `-- hibernate.xml
             |       `-- security.xml
             |       `-- servlet.xml
             |   `-- views
             |       `-- ...
             |   `-- redirect.jsp
             |   `-- web.xml

Как видите, js в src/main/webapp/resources.Я использую плагин scm для проверки этих репозиториев GitHub:

https://github.com/jquery/jquery

https://github.com/jquery/jquery-ui

После этой проверки мне нужно использовать их механизм сборки для объединенияи свернуть и переместить target/jquery/dist/jquery.min.js, target/jquery-ui/build/dist/jquery-ui.min.js, jquery-ui/build/dist/jquery-ui-1.9pre/ui/minified/i18n/jquery-ui-i18n.min.js в target/myproject-1.0-SNAPSHOT/resources/js.

Вот необходимый фрагмент моего pom.xml:

<plugins>

  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>${java.version}</source>
      <target>${java.version}</target>
      <showWarnings>true</showWarnings>
    </configuration>
  </plugin>

  <plugin>
    <artifactId>maven-war-plugin</artifactId>
  </plugin>

  <plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <phase>install</phase>
        <goals>
          <goal>sources</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

  <plugin>
    <artifactId>maven-scm-plugin</artifactId>
    <executions>
      <execution>
        <id>checkout-jquery</id>
        <phase>compile</phase>
        <goals>
          <goal>checkout</goal>
        </goals>
        <configuration>
          <connectionUrl>scm:git:git://github.com/jquery/jquery.git</connectionUrl>
          <checkoutDirectory>${project.build.directory}/jquery</checkoutDirectory>
        </configuration>
      </execution>
      <execution>
        <id>checkout-jquery-ui</id>
        <phase>compile</phase>
        <goals>
          <goal>checkout</goal>
        </goals>
        <configuration>
          <connectionUrl>scm:git:git://github.com/jquery/jquery-ui.git</connectionUrl>
          <checkoutDirectory>${project.build.directory}/jquery-ui</checkoutDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
      <execution>
        <phase>compile</phase>
        <goals>
          <goal>exec</goal>
        </goals>
        <configuration>
          <executable>make</executable>
          <workingDirectory>${project.build.directory}/jquery</workingDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>

  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <phase>compile</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <target>
            <ant antfile="build.xml" dir="${project.build.directory}/jquery-ui/build" />
          </target>
        </configuration>
      </execution>
    </executions>
  </plugin>

</plugins>

Мне просто нужно следующеешаги:

  • Используйте exec-maven-plugin, чтобы использовать механизм объединения + минимизации jquery (Makefile)
  • Используйте maven-antrun-plugin, чтобы использовать механизм объединения + минимизации jquery-ui (Ant build.xml)
  • Переместите минимизированные файлы jquery, jquery-ui и jquery-ui-i18n js в target/myproject-1.0-SNAPSHOT/resources/js
  • , затем выполните другие фазы жизненного цикла

Но он останавливается наШаг 2: maven-antrun-plugin.Чтобы быть более конкретным, проблема здесь при запуске сценария внешней оболочки:

minify:
     [echo] Building minified
    [mkdir] Created dir: /home/danny/myproject/target/jquery-ui/build/dist/jquery-ui-1.9pre/ui/minified
    [mkdir] Created dir: /home/danny/myproject/target/jquery-ui/build/dist/jquery-ui-1.9pre/ui/minified/i18n
    [mkdir] Created dir: /home/danny/myproject/target/jquery-ui/build/dist/jquery-ui-1.9pre/themes/base/minified
    [apply] build/minify-js.sh: Line 3: /home/danny/myproject/dist/jquery-ui-1.9pre/ui/minified/jquery-ui.min.js: File or folder not found
    [apply] Result: 1
    ...

Сценарий ищет неправильный каталог (/home/danny/myproject/dist/jquery-ui-1.9pre/ui/minified/jquery-ui.min.js вместо /home/danny/myproject/target/jquery-ui/build/dist/jquery-ui-1.9pre/ui/minified/jquery-ui.min.js)

EDIT : Проблема в том, что minify-js.sh получает неверный второй аргумент ($ 2).Добавление этого в modify-js.sh: echo "test: $1 -> $2" приводит к: test: /home/danny/myproject/target/jquery-ui/build/dist/jquery-ui-1.9pre/ui/jquery-ui.js -> /home/danny/myproject/dist/jquery-ui-1.9pre/ui/minified/jquery-ui.min.js Но почему?

EDIT2 : Я потянул запрос к jquery-ui, чтобы это исправить

Но теперь мне нужно знать, как переместить минимизированные файлы jquery, jquery-ui и jquery-ui-i18n js в target/myproject-1.0-SNAPSHOT/resources/js после war:excluded.

Какой лучший способ здесь?

1 Ответ

1 голос
/ 21 марта 2012

Я бы добавил еще одно выполнение к вашему 'maven-antrun-plugin', которое запускает команду ant 'move' и перемещает все, что вам нужно.

Честно говоря, вам придется экспериментировать, на какой фазе вы 'Я хочу связать это с.Я предполагаю, что война: исключение ведется на этапе «пакет».Если это так, то, поскольку maven не имеет шага между пакетным и интеграционным тестами, вы можете:

  1. Попробуйте связать его с «пакетом» и посмотреть, будет ли он работать после войны: исключен
  2. Свяжите это с тестом перед интеграцией.Он не имеет ничего общего с интеграционными тестами, но, по крайней мере, вы будете уверены, что он работает после войны: исключено.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...