GWT не использует файл свойств ресурса из цели, но один раз в src / main / resources. Как сделать это с заполнителями? - PullRequest
6 голосов
/ 31 августа 2011

У меня есть веб-проект gwt, который должен использовать application.properties (на стороне клиента), загруженный в код как TextResource.Все работает нормально, но теперь я хочу централизовать все значения свойств в maven pom.xml.Поэтому я создал application.properties с заполнителями, такими как key1 = $ {param1} и в pom.xml настроил свойство param1Value

Итак, в результате maven заменяет заполнители в application.properties в target dir, нопохоже, что компилятор gwt использует файл application.properties из src / main / resources.Я проверил скомпилированные js-файлы, и там я вижу, что заполнитель не заменяется своим значением из pom.xml (target.properties объекта правильный).

ОБНОВЛЕНИЕ: Проблема в том, что свойстваФайл, который я фильтрую, является файлом пакета ресурсов сообщений gwt, и из того, что я увидел, maven создает «сгенерированную» папку и помещает сгенерированный java-файл на основе файла свойств, найденного в корневой папке исходных файлов проекта, а не в целевой папке.После этого он включает его в общий файл javascript.Это означает, что у меня есть две возможности: 1) попросить плагин ресурсов перезаписать файл свойств, расположенный в папке исходников (я не согласен с этим, потому что у меня наверняка будут проблемы при следующем обновлении subversion) 2) сказать gwt-maven-pluginискать файл свойств в папке target / classes, который я считаю невозможным

Что вы думаете?

Ответы [ 2 ]

4 голосов
/ 03 ноября 2011

Я решил ту же проблему, используя ресурсы: выполнение copy-resources и плагин build-helper.В частности, настройте плагин ресурсов:

  <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
      <execution>
        <id>filter-sources</id>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <phase>generate-sources</phase>
        <configuration>
          <outputDirectory>${project.build.directory}/gwt-extra</outputDirectory>
          <resources>
            <resource>
              <filtering>true</filtering>
              <directory>src/main/filtered-sources</directory>
            </resource>
          </resources>
        </configuration>
      </execution>
    </executions>
  </plugin>

и включите его с помощью помощника по сборке:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.7</version>
    <executions>
      <execution>
        <id>add-source-gwt</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>add-source</goal>
        </goals>
        <configuration>
          <sources>
            <source>${project.build.directory}/gwt-extra</source>
          </sources>
        </configuration>
      </execution>
    </executions>
  </plugin>
1 голос
/ 12 октября 2012

Мне удалось использовать maven-фильтрацию для файлов свойств, используемых при компиляции GWT.
Я использую интерфейс com.google.gwt.i18n.client.Constants .

Позволяет создать интерфейс, расширяющий константы, с методами, возвращающими значения, взятые из файла свойств.
Этот файл свойств может быть обработан путем фильтрации maven.

Это действительно легко сделать:

  • объявить константы, расширяющие интерфейс: XxConstants
  • создайте файл свойств XxConstants.properties в src / main / resource в том же пакете, что и ваш интерфейс
  • активировать фильтрацию ресурсов maven для фильтрации XxConstants.properties
  • когда GWT компилируется (с помощью gwt-maven-plugin), он генерирует экземпляр XxConstants, используя отфильтрованный файл свойств.
  • в своем коде gwt создайте экземпляр XxConstants с помощью GWT.create или с внедрением джина
  • вызов методов для получения значений свойств

Одно предупреждение: фильтрация не работает в режиме gwt dev

Результат можно проверить в папке target.generated, которая будет содержать реализацию интерфейса Java с использованными отфильтрованными свойствами.

...