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