Java 使用maven时开发环境与部署的不同spring XML文件

Java 使用maven时开发环境与部署的不同spring XML文件,java,eclipse,spring,maven-2,ldap,Java,Eclipse,Spring,Maven 2,Ldap,摘要 我们有一个中央LDAP服务器,部署的Java web应用程序应该连接到该服务器。我们的JUnit测试依赖于LDAP存储库中的特定数据,因此它们需要连接到一个嵌入式ApachedsLDAP服务器,并使用一个样本数据集进行初始化。我们如何确保部署Web应用程序时ApacheDS服务器不会启动 详细信息 我们正在使用Spring安全性,在ldap-context.xml中有以下行来启动嵌入式ldap服务器: <security:ldap-server root="dc=test,dc=co

摘要

我们有一个中央LDAP服务器,部署的Java web应用程序应该连接到该服务器。我们的JUnit测试依赖于LDAP存储库中的特定数据,因此它们需要连接到一个嵌入式ApachedsLDAP服务器,并使用一个样本数据集进行初始化。我们如何确保部署Web应用程序时ApacheDS服务器不会启动

详细信息

我们正在使用Spring安全性,在ldap-context.xml中有以下行来启动嵌入式ldap服务器:

<security:ldap-server root="dc=test,dc=com" port="33389" ldif="classpath:EmbeddedServerRoot.ldif" />

然后,我们的web.xml将只包含application-context.xml,除了一件事——这在从WTP运行时不起作用——在这种情况下,我们还需要启动嵌入式服务器。有什么建议吗?

如果您使用的是Maven,为什么不使用Assembly插件来管理您的环境部署呢。您的spring文件似乎没有那么复杂,因此您可以有一个没有ldap-context.xml引用的公共spring文件,然后是一个有ldap引用的测试特定版本。配置并运行程序集时,特定于环境的文件将覆盖通用版本,然后您可以部署打包的应用程序。

另一种可能是使用pom中的某些属性和过滤后的SpringBean文件定义bean的别名,以便在环境之间切换。但是您需要在配置中同时使用这两个bean,但您将使用其中一个。

您是否主张使用两个web.xml文件?听起来ldap-context.xml在默认情况下需要包含,这样WTP才能工作,那么maven就必须用一个“生产”web.xml文件覆盖它。。。?关于你的方法的更多细节会有所帮助。
    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>
           classpath:ldap-context.xml
           classpath:application-context.xml 
       </param-value>
   </context-param>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:ldap-context.xml", "classpath:application-context.xml" })
public class TestStuff {
}