我有一个基于Gradle的项目,其中有两个模块mod1
和mod2
。两者都是Spring Boot项目。 mod1
具有mod2
作为依赖项:
dependencies {
compile project(':mod2')
//more deps
}
mod1
和mod2
类的基本包均为com.project
。在mod2
中,我在com.project.controllers
下有一些Spring MVC控制器,因此,当我启动mod1
时,mod2
控制器会在Spring上下文中注册。
我想避免那样。
我尝试使用exclude
的{{1}}参数排除它们,但是它不起作用(因为我猜它们是在另一个模块/依赖关系中,而不是在项目本身中)。
是否可以通过Gradle配置以某种方式排除@SpringBootApplication
的{{1}}软件包?
答案 0 :(得分:0)
据我所知不可能。 Gradle将mod2
视为依赖项,因此它将提取一切,包括其任何依赖项,具体取决于您如何在mod2
的{{1}}文件中声明它们。>
由于它们是同一软件包的一部分,因此它们将由Spring自动提取,据我所知,实际上,从自动扫描中排除单个组件的唯一方法是显式指定要通过排除的组件excludeFilters
:
build.gradle
否则,您将需要将那些特定的控制器声明为单独的依赖项,并在引入excludeFilters = @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {MyController.class, MyOtherController})
时将其排除在外:
mod2
for build.gradle
m2
dependencies {
compile project(':mod2') {
exclude 'controllers'
}
}
for build.gradle
m1
类似的东西。我不是Gradle专家,所以请参考文档: