web.xml 基于 Maven 配置文件的配置
web.xml configuration based on Maven profile
什么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>
您可以使用 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>
我使用 Maven Replacer plugin 并用它来替换我的 appengine-web.xml 中的给定字符串 -VERSION-。这样我就可以在 Jenkins 上获得多个设置(使用推送部署)以使用相同的代码部署在不同的版本上。
这不是很花哨,但可以完成工作。
<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>
什么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>
您可以使用 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>
我使用 Maven Replacer plugin 并用它来替换我的 appengine-web.xml 中的给定字符串 -VERSION-。这样我就可以在 Jenkins 上获得多个设置(使用推送部署)以使用相同的代码部署在不同的版本上。
这不是很花哨,但可以完成工作。
<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>