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

标签 java eclipse spring maven-2 ldap

摘要

我们有一个中央 LDAP 服务器,我们部署的 Java Web 应用程序应该连接到它。我们的 JUnit 测试依赖于 LDAP 存储库中的特定数据,因此它们需要连接到带有示例数据集的嵌入式 ApacheDS LDAP 服务器。我们如何确保 ApacheDS 服务器在部署 Web 应用程序时不会启动?

详细信息

我们使用 Spring security,并在 ldap-context.xml 中使用以下行来启动嵌入式 LDAP 服务器:

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

目前,我们的 web.xml 引用了这个测试上下文文件和我们的顶级 application-context.xml:

    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>
           classpath:ldap-context.xml
           classpath:application-context.xml 
       </param-value>
   </context-param>

我们需要确保在运行 JUnit 测试时以及直接从 eclipse(通过 WTP)运行 web 应用程序时包含 ldap-context.xml,但在打包 war 并将其部署到服务器时排除该文件.

我们使用 Maven 作为构建工具。通过确保 JUnit 测试在上下文配置中包含两个 spring 上下文文件,我们可以相当轻松地处理这种情况:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:ldap-context.xml", "classpath:application-context.xml" })
public class TestStuff {
}

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

最佳答案

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

关于java - 使用 maven 时用于开发环境与部署的不同 spring XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/209786/

相关文章:

spring - Spring Boot 中的 Dispatcher Servlet

java - JaCoCo 和私有(private)默认构造函数的遗漏

java - Android XML 布局主屏幕小部件

java - ORA-01461 : can bind a LONG value

android - 如何填充 Java 项目中每个函数的 log/println 调用?

java - Eclipse:导入javacard无法解析

java - Eclipse 项目无法识别 Swagger Codegen Artifact

spring - org.hibernate.hql.internal.ast.QuerySyntaxException : EdbmsEmployee is not mapped [from EdbmsEmployee edbmsEmployee where edbmsEmployee. 员工 ID=?]

java - 使用 RSA key 加密 AES key

spring - @Cacheable注解的value和cacheName参数的区别