4

我在根 pom.xml 文件中有一个属性:gecko1_8。我想把它放到 gwt.xml 文件中。

所以我把这个属性放到 gwt.xml 中:

我在构建部分添加了以下内容:

<resources>
  <resource>
  <directory>src/main/resources</directory>
  <filtering>true</filtering>
    <excludes>
      <exclude>VAADIN.themes/*</exclude>
    </excludes>
  </resource>
</resources>

但最后构建失败并出现错误:

错误:无效的属性值“${gwt.user.agents}”

错误:解析 XML 时失败

如何通过属性将值从 pom.xml 到 gwt.xml 文件?

更新

有趣的事情。当我使用“mvn resources:resources”时,属性的值会正确写入 gwt.xml 文件,但是如果我运行“mvn clean install -pl com.myproject.module:submodule”,它会因“无效的属性值”而失败。

4

2 回答 2

3

您必须在 pom 中定义一个 Maven 配置文件(最好为每种情况定义一个特定的配置文件),如下所示:

    <profile>
        <id>gecko</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <user.agent.gecko>
                <![CDATA[<set-property name="user.agent" value="gecko,gecko1_8" />]]>
            </user.agent.gecko>
        </properties>
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*YourGWTModule.gwt.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
            <defaultGoal>process-resources</defaultGoal>
        </build>
    </profile>

<properties>
    <!--<user.agent>ie6,ie8,gecko,gecko1_8,opera,safari</user.agent>-->
    <user.agent.all> </user.agent.all>
    <user.agent.ie6> </user.agent.ie6>
    <user.agent.ie8> </user.agent.ie8>
    <user.agent.gecko> </user.agent.gecko>
    <user.agent.opera> </user.agent.opera>
    <user.agent.safari> </user.agent.safari>
</properties>

然后YourGWTModule.gwt.xml像这样设置它:

<set-property name="locale" value="default" />
<!-- Specified through pom.xml profiles -->
${user.agent.all}
${user.agent.ie6}
${user.agent.ie8}
${user.agent.gecko}
${user.agent.safari}
${user.agent.opera}

</module>

最后使用配置文件运行 maven:

mvn -P gecko install
于 2013-01-23T17:57:34.587 回答
0

有一件事我没有提到,但它似乎太重要了。在构建期间使用的插件可以有自己的目标。其中一个目标可以“重做” maven-resource-plugin 所做的事情。

所以我有一个插件 vaadin-maven-plugin:

<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<version>${vaadin.plugin.version}</version>
<configuration>
    ...
</configuration>
<executions>
    <execution>
        <goals>
            <goal>resources</goal>
            <goal>compile</goal>
        </goals>
    </execution>
</executions>
</plugin>

并删除一个<goal>resources</goal>固定的问题。现在mvn clean install正确过滤我的 gwt.xml 中的属性。

希望此解决方案可以帮助那些将遇到此类问题的人。

于 2013-07-02T14:05:47.610 回答