从 gradle spring 项目中的依赖 jar 中排除配置文件(.xml 和包)

exclude the configuration file (.xml and package) from dependency jar in gradle spring project

在我的 spring 项目中,我们使用的 Web 依赖项包含配置 applicationContext.xmlsecurity-config.xml。我必须在我的应用程序中更改它们,我该如何实现。

我期待这样

compile (librariesdependencyname) {
        exclude ('applicationContext.xml')
        exclude ('common-security-config.xml')
    }

如果您的团队正在处理罐子。只要求他们创建新版本并且没有此配置和资源文件

您可以修改上下文加载器的位置和模式,如下所示

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext.xml,classpath*:/**/*-config.xml</param-value>
    </context-param>

有关项目设置的更多信息将有助于提供更准确的建议。 可以有多种实现方式。

假设你有以下

  1. 库提到了 xml 个文件
  2. 我们想要代码而不是配置

如@Araf所述,我们可以要求团队更新库并更改配置

  1. 重构代码以提供自动配置文件,这样库的使用者可以选择是否通过自动加载来加载配置
  2. 定义您自己的 xml 文件来加载,这样它就不会加载库配置

实现https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-auto-configuration中提到的AutoConfiguration机制的一种方法 或者因为它是您自己的项目,您可以尝试多模块项目 https://www.baeldung.com/spring-boot-multiple-modules

选择加载或排除哪个包,我们可以使用@ComponentScan https://www.baeldung.com/spring-component-scanning.

XML版本的注解应该可以用,我个人更喜欢注解,因为它会使用代码作为配置。

您可以在 gradle 中添加自定义任务,而不是添加您的 jar 编译“依赖项。将其定义为 ”something“ 依赖项。使用 访问它对象=13=]configurations."something" 。参考下面的例子

librariesdependency "<<package-librariesdependencyname>>"

jar.dependsOn 'customJar'

task customJar (type: Jar) {
archiveName = 'your-output.jar'
from zipTree(configurations.librariesdependency.singleFile)
exclude 'applicationContext.xml'
}