如何编译使用相同应用程序文件和不同控制器的多个 jars

r12*_*123 11 java build gradle spring-boot

我正在weather与 2 个提供者weather-1weather-2. 我有两个Spring Controllercontroller-1controller-2分别调用这两个服务。

我的目的是将两个气象服务罐之间切换,就像如果我想从获取的气象资料weather-1,然后controller-1先后与编译weather-1.jar,同时文件controller-2保持不变。

我已经尝试使用两个不同的Gradle文件来处理build-weather-1.gradlebuild-weather-2.gradle.

两者都有jar自己的依赖项。

build-weather-1.gradle

implementation 'com.xxx.weather:weather-1:0.0.1'
Run Code Online (Sandbox Code Playgroud)

build-weather-2.gradle

implementation 'com.xxx.weather:weather-2:0.0.1'
Run Code Online (Sandbox Code Playgroud)

build-weather-1.gradle用命令运行了- gradle -b build-weather-1.gradle build。不幸的是,这个构建文件也需要其他服务类控制器。

error: package com.xxx.weather.weather-2 does not exist
Run Code Online (Sandbox Code Playgroud)

我已经排除了如下包裹,

sourceSets {
 main {
 java {
 exclude 'com/xxxx/weatherservice/controller/Weather2Controller.java'
 }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这个 interface( weather-2) 在 Application.java 文件中被声明为一个 bean,它抛出包未找到错误。

如何解决此错误?

小智 0

在我看来,如果您的项目需要彼此独立构建,您应该将它们保留为单独的项目(在这种情况下,您仍然可以通过其他项目可能依赖的第三个库项目共享一些代码)。

如果您仍然想将它们保留在相同的 gradle 结构中,您应该研究本指南中提到的多模块设置,并将每个子模块的构建配置保留在其自己的 build.gradle 文件中。