基于Maven配置文件的web.xml配置

时间:2015-03-27 07:20:55

标签: java maven google-app-engine web.xml

可以使用什么maven插件来生成基于maven配置文件生成的appengine-web.xml应用程序,例如-Pdev-Pprod

示例:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>myapp-dev</application>
  <version>1</version>
  <static-files/>
  <threadsafe>true</threadsafe>
  <precompilation-enabled>false</precompilation-enabled>
</appengine-web-app>

对于-Pdev,以及个人资料为-Pprod

应用程序名称为:<application>myapp-prod</application>

2 个答案:

答案 0 :(得分:6)

您可以使用maven-war-plugin更改应用程序的版本和名称

在appengine-web.xml上,写下以下行

<application>${appengine.app}</application>
<version>${version.number.gae}</version>

这是你需要的maven插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <warSourceDirectory>${project.basedir}/src/main/webapp</warSourceDirectory>
        <webappDirectory>${project.build.directory}/${project.artifactId}</webappDirectory>
        <filters>
            <filter>src/main/resources/application.properties</filter>
            <filter>src/main/webapp/WEB-INF/appengine-web.xml</filter>
        </filters>
        <webResources>
            <resource>
                <directory>src/main/webapp</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/appengine-web.xml</include>
                    <include>**/web.xml</include>
                    <include>open_graph/**</include>
                </includes>
            </resource>
        </webResources>

        <!-- Exclude all timestamp specific static files. (see maven-resource-plugin in this pom.xml) -->
        <warSourceExcludes>css/**,flash/**,mobile/**,images/**,<!--js/**,-->sounds/**,channel.html</warSourceExcludes>

    </configuration>
</plugin>

和maven个人资料

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <appengine.app>my-gae-dev</appengine.app>
            <version.number.gae>1</version.number.gae>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <appengine.app>my-gae-prod</appengine.app>
            <version.number.gae>1</version.number.gae>
        </properties>
    </profile>
</profiles>

答案 1 :(得分:1)

我使用Maven Replacer plugin并使用它来替换appengine-web.xml中给定的String -VERSION - 。这样我就可以在Jenkins上进行多项设置(使用push to deploy),以便在具有相同代码的不同版本上进行部署。

它不是很花哨但是完成了工作。

<plugin>
                <groupId>com.google.code.maven-replacer-plugin</groupId>
                <artifactId>replacer</artifactId>
                <version>1.5.3</version>
                <executions>
                    <execution>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>replace</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <file>${project.build.directory}/generated-sources/appengine-endpoints/WEB-INF/appengine-web.xml</file>
                    <token>-VERSION-</token>
                    <value>${app_version}</value>
                </configuration>
            </plugin>