我正在将一个蚂蚁脚本移植到maven,我仍然在改变我的web.xml。
我的web.xml在开发期间将以下安全约束设置为NONE,并为生产服务器生成的war提供CONFIDENTIAL。
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOnly</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
我使用XSL脚本来处理从ant调用的web.xml文件。我希望maven生成war文件,其中XSL已应用于web.xml,并且转换的web.xml用于生成的war。
我知道maven XSL插件和maven配置文件的概念,但我很难将它们放在一起,我不确定正确的maven方式是什么来处理情况。
答案 0 :(得分:2)
有很多方法可以实现这一目标。可能最简单的方法是使用maven-antrun-plugin http://maven.apache.org/plugins/maven-antrun-plugin/并调用现有的ant任务
我知道的其他方法是使用变量/占位符和Maven过滤(变量替换),看看:http://maven.apache.org/plugins/maven-assembly-plugin/examples/single/filtering-some-distribution-files.html
答案 1 :(得分:1)
Maven方式是使用过滤。
下面的常规web.xml过滤示例,没有xsl:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<webResource>
<directory>${basedir}/src/main/webapp/WEB-INF</directory>
<includes>
<include>web.xml</include>
</includes>
<targetPath>WEB-INF</targetPath>
<filtering>true</filtering>
</webResource>
</webResources>
</configuration>
</plugin>
</plugins>
<filters>
<filter>src/main/filters/filter-${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
如果您坚持使用xsl,则可以Maven xml plugin使用example,<{3}}:
<build>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>src/main/xml</dir>
<stylesheet>src/main/stylesheet.xsl</stylesheet>
</transformationSet>
</transformationSets>
</configuration>
</plugin>
...
</plugins>
</build>
答案 2 :(得分:0)
我解决了我的问题,我使用web应用程序的pom.xml设置了prod配置文件,其中包含以下插件。这对我有用,因为当项目被导入eclipse时,我真的不想要任何想象的事情发生,我希望一切都能开箱即用。它没有在下面显示,但我还添加了一个调用NodeJS来在generate-sources阶段使用RequireJS构建javascript前端。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>transform</goal>
</goals>
<configuration>
<transformationSets>
<transformationSet>
<dir>src/main/webapp/WEB-INF</dir>
<includes>
<include>web.xml</include>
</includes>
<stylesheet>src/main/webapp/WEB-INF/web.xsl</stylesheet>
</transformationSet>
</transformationSets>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>target/generated-resources/xml/xslt/web.xml</webXml>
<archiveClasses>true</archiveClasses>
<warSourceExcludes>META-INF/context.xml</warSourceExcludes>
<packagingExcludes>
**/**/context.xml
</packagingExcludes>
</configuration>
</plugin>