GWT 不使用目标中的资源属性文件,而是使用 src/main/resources 中的资源属性文件。如何用占位符制作它?

发布于 2024-12-02 07:14:35 字数 685 浏览 1 评论 0原文

我有 gwt web 项目,它必须使用 application.properties (在客户端)作为 TextResource 在代码中加载。一切工作正常,但现在我想将所有属性值集中在 maven pom.xml 中。所以我用像 key1=${param1} 这样的占位符制作了 application.properties ,并在 pom.xml 中配置了属性 param1Value

所以,发生的事情是 maven 替换了目标目录中 application.properties 中的占位符,但似乎 gwt 编译器使用src/main/resources 中的 application.properties 文件。我检查了编译的 js 文件,我可以看到占位符没有被 pom.xml 中的值替换(目标的 application.properties 是正确的)。

更新: 问题是,我正在过滤的属性文件是一个 gwt messages 资源包文件,从我所看到的情况来看,maven 创建了一个“生成”文件夹,并根据在根项目源文件夹中找到的属性文件放置了一个生成的 java 文件,不在目标文件夹中。之后,它将其合并到 javascript 通用文件中。 这意味着我有两种可能性: 1)告诉资源插件覆盖位于源文件夹中的属性文件(我对此不太满意,因为我肯定会在下一个颠覆更新时遇到问题) 2)告诉gwt-maven-plugin在target/classes文件夹中寻找属性文件,我认为这是不可能的

你觉得呢?

I have gwt web project, which must use application.properties (on client side) loaded as TextResource in the code. Everything works fine, but now i want to centralize all properties values in maven pom.xml. So i made application.properties with placeholders like key1=${param1} and in the pom.xml i configured property param1Value

So, what happening is that maven replaces the placeholders in application.properties in target dir, but it seems that gwt compiler uses the application.properties file from src/main/resources. I checked the compiled js files and i there i can see that the placeholder is not replaced with its value from the pom.xml (target's application.properties is correct).

UPDATE:
The problem is that, the properties file I am filtering is a gwt messages resources bundle file and from what I saw, maven creates a "generated" folder and puts a generated java file based on the properties file found in the root project sources folder and not in the target folder. After that, it incorporates it in the javascript general file.
This means I have two possibilities:
1) tell the resources plugin to overwrite the properties file located in the sources folder (I am not cool with that because I will certanly have problems on the next subversion update)
2) tell gwt-maven-plugin to seek the properties file in the target/classes folder which I think it is impossible

What do you think ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

极致的悲 2024-12-09 07:14:35

我通过使用 resources: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>

I resolved the same problem by using resources:copy-resources execution and build-helper plugin.
In particular, configure the resources plugin:

  <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>

and include it using build helper:

  <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>
别闹i 2024-12-09 07:14:35

我设法对 GWT 编译中使用的属性文件使用 Maven 过滤。
我使用 com. google.gwt.i18n.client.Constants 接口。

它允许实例化一个扩展常量的接口,方法返回从属性文件中获取的值。
该属性文件可以通过 Maven 过滤进行处理。

这真的很容易做到:

  • 声明一个扩展常量的接口: XxConstants
  • 在 src/main/resource 中创建一个属性文件 XxConstants.properties 在与你的接口相同的包中
  • 过滤 XxConstants.properties
  • 激活 maven 资源过滤,以便在 GWT 编译时 (使用 gwt -maven-plugin),它将使用过滤后的属性文件生成 XxConstants 的实例。
  • 在您的 gwt 代码中,使用 GWT.create 创建 XxConstants 的实例,或者使用 gin 注入调用
  • 方法来获取属性值

一个警告:过滤在 gwt 开发模式下不起作用

结果可以在 target.generate 文件夹中检查,其中包含使用已过滤属性的接口的 java 实现。

I managed to use maven filtering on properties files used in GWT compilation.
I use the com.google.gwt.i18n.client.Constants interface.

It allows to instanciate an interface that extends Constants, with methods returning values taken from a properties file.
That properties file can be process by maven filtering.

It's really easy to do :

  • declare an interface extending Constants : XxConstants
  • create a properties file XxConstants.properties in src/main/resource in the same package as your interface
  • activate maven resources filtering so XxConstants.properties is filtered
  • when GWT is compiling (with gwt-maven-plugin), it will generate an instance of XxConstants using the filtered properties file.
  • in your gwt code, create an instance of XxConstants with GWT.create or with gin injection
  • call the methods to get the property values

One caveat : filtering is not working in gwt dev mode

Result can be check in the target.generated folder whiwh will contained the java implementation of the interface with the filtered properties used.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文