Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven Struts-基于环境的配置_Maven_Ant_Struts - Fatal编程技术网

Maven Struts-基于环境的配置

Maven Struts-基于环境的配置,maven,ant,struts,Maven,Ant,Struts,我正在尝试整理一个相当旧的系统,它有两个使用Struts的Web应用程序。以前的构建系统只是一套经过多年构建的相当粗糙的Ant脚本,我正试图用Maven和一个合适的CI(Jenkins)来替换它 目前的问题是,在一些Web应用程序的struts-config.xml文件中,有一个名为“build-live”的Ant任务,它将字符串“8080”和“4343”(dev-values)分别替换为“80”和“443”(live-values)。有一个任务“build local”的作用正好相反 配置文件

我正在尝试整理一个相当旧的系统,它有两个使用Struts的Web应用程序。以前的构建系统只是一套经过多年构建的相当粗糙的Ant脚本,我正试图用Maven和一个合适的CI(Jenkins)来替换它

目前的问题是,在一些Web应用程序的struts-config.xml文件中,有一个名为“build-live”的Ant任务,它将字符串“8080”和“4343”(dev-values)分别替换为“80”和“443”(live-values)。有一个任务“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一起工作,但是因为这需要依赖于环境的重建,所以它打破了我的主要目标“构建一次,部署到任何地方”


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

因此,我最终用自己的方法扩展了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
    }
}
它很脏,但能用