2013-01-16 84 views
1

我正在將一個ant腳本移植到maven,並且我一直在改變我的web.xml。如何在使用maven進行打包時轉換web.xml?

我的web.xml在開發過程中將以下安全性約束設置爲NONE,對於爲生產服務器生成的戰爭,設置爲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

我解決了我的問題,我使用pom.xml爲Web應用程序設置了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> 
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的基礎工作:

<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> 
相關問題