2012-03-06 114 views
2

我正在使用Struts 2 Web应用程序。它有很多模块和功能。我想根据客户要求启用或禁用(或删除)一些模块。但在单个WAR文件部署下的Struts 2中,我怎样才能使它成为模块化?在部署时可以取出一些模块吗?Struts 2模块化Web应用程序

在此先感谢。

+2

你能描述一下你的意思是模块?你可以创建模块作为罐子并按照你的要求使用它们 – 2012-03-06 05:46:18

+0

如果你的意思是模块在struts2命名空间中,你可能想要获得actionmapping,并删除你不需要的模块?这是想法,但如果你删除映射,如果有一个名称空间映射调用,不会导致异常? – Jasonw 2012-03-06 08:46:23

回答

1

如果您使用Maven,那么您可以排除某些类/软件包不被包含在WAR中,您也可以拥有多个目标并以此方式排除代码的不同子集。

此方法假设您要么将功能分离为多个“struts.xml”动作定义文件,要么使用带注释的Struts2约定插件等,然后最终得到一个非常好的解决方案。

所以,在pom.xml中,你必须首先排除所有模块:

<build> 
    <finalName>badNameUseBuildProfileInstead</finalName> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <excludes> 
       <exclude>**/struts-module1.xml</exclude> 
       <exclude>**/struts-module2.xml</exclude> 
       <exclude>**/struts-module3.xml</exclude> 
      </excludes> 
     </resource> 
    </resources> 
... 

然后你做,包括所需要的模块构建简介:

... 

<profiles> 
    <profile> 
     <id>web</id> 
     <build> 
      <finalName>${project.artifactId}</finalName> 
      <resources> 
       <resource> 
        <directory>src/main/resources</directory> 
        <includes> 
         <include>**/struts-web.xml</include> 
        </includes> 
       </resource> 
      </resources> 
      ...