gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:12:54 27 4
gpt4 key购买 nike

摘要

我们有一个中央 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com