Struts - 基于环境的配置

时间:2014-11-24 02:20:49

标签: maven ant struts

我试图使用Struts整理出一个包含几个webapp的旧系统。以前的构建系统刚刚是一套相当hacky的Ant脚本,这些脚本多年来已经建立起来,我试图用Maven和一个合适的CI(Jenkins)取而代之。

我目前遇到的问题是,有一个名为“build-live”的Ant任务。取代字符串' 8080'和' 4343' (dev值)与''和' 443' (实时值)分别在几个webapps的struts-config.xml文件中。有一个任务' build-local'反其道而行之。

配置文件中的XML如下:

<plug-in className="org.apache.struts.action.SecurePlugIn">
    <!-- Set to 80 by 'build-live' Ant task -->
    <set-property property="httpPort" value="8080"/>
    <!-- Set to 443 by 'build-live' Ant task -->
    <set-property property="httpsPort" value="4343"/>
</plug-in>

我设法在Maven中使用AntRun插件来做同样的事情,因此它可以与Maven一起使用,但是因为这需要依赖于环境的重建,它打破了我的主要目标&#39; Build Once ,随处部署&#39;。

因此,我希望有人可以向我解释是否可以将这些转化为可注射的属性。

1 个答案:

答案 0 :(得分:0)

所以我最终用自己的方法扩展了SecurePlugIn类,并覆盖了init方法:

public class PropertisedSecurePlugin extends SecurePlugIn {

    @Override
    public void init(ActionServlet servlet, ModuleConfig config) throws ServletException {
        super.init(servlet, config);
        String dev = System.getProperty("dev");
        if (Boolean.TRUE.toString().equals(dev)) {
            setHttpPort("8080");
            setHttpsPort("4343");
        } // Else not required here as it falls back to defaults
    }
}

它很脏,但它有效。