我有项目A
和B
两者都有 common
项目作为在其 build.gradle 文件中定义的编译依赖项,如下所示:
dependencies {
compile project(":common")
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-security')
compile('org.springframework.boot:spring-boot-starter-cache')
compile("net.oauth.core:oauth:20090617")
compile("net.oauth.core:oauth-httpclient4:20090617")
compile('org.apache.httpcomponents:httpclient')
compile("com.atlassian.jira:jira-rest-java-client:2.0.0-m2")
compile("com.google.guava:guava:18.0")
compile('org.flywaydb:flyway-core')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
这个通用项目有 application.yml 文件,其中包含各种通用信息,例如数据库连接属性、 hibernate 设置等。所以我不想在其他项目(例如 A
)中复制这些文件。和B
。
在项目中A
主要的 Spring Boot 文件如下所示:
@SpringBootApplication(scanBasePackageClasses = {CommonApp.class,
A.class})
public class A {
public static void main(String[] args) {
SpringApplication.run(A.class, args);
}
}
哪里CommonApp
是 commmon
中的一个主类项目。这个common
主文件如下:
@SpringBootApplication
public class CommonApp {
public static void main(String[] args) {
SpringApplication.run(CommonApp.class, args);
}
}
项目A
和B
编译得很好,但是全部 yml
common
的类路径中的文件从 A
中看不到项目和B
,所以我别无选择,只能在 A
中手动复制它们。和B
更好的方法是什么? spring boot常用项目可以和其他项目共享资源吗?
请注意,理想的解决方案不应依赖于 gradle,因为我想从 Intellij IDEA 运行单元和集成测试,它不使用 gradle 来运行测试。
我的应用程序结构是
app
|-A
|-build.gradle
|-web
|-B
|-build.gradle
|-common
|-src/main/resources
|-application.yml
|-database.yml
|-web.yml
|-settings.gradle
|-build.gradle
A、B 和 common 都是 spring boot 应用(common 也是一个 boot 应用,但它仅用作 A、B 的依赖)。
最佳答案
如果您想要一个非 gradle 解决方案,您始终可以添加一个 DAO 式文件来访问公共(public)项目中所需的值,然后将您的公共(public)项目打包并将其添加为项目 A 和 B 的依赖项。
编辑:抱歉,我没有解释清楚。当我说“DAO 式文件”时,我的意思是指访问属性文件的 getter(以及 setter,如果需要)的文件。例如,有一个单例的 getter 文件。创建时,创建对属性文件的静态引用。当项目A(或B)需要某个属性时,可以调用该文件来获取该属性。
至于 gradle 解决方案,看起来你的上面与你的相当接近
compile project(":common")
代码。您是否有包含以下行的 settings.gradle 文件
includeFlat "common"
以及对与项目 A 和 B 位于同一目录中的公共(public)项目的引用?例如
项目A
(...项目 A 的文件...)
项目B
(...项目 B 的文件...)
常见 (...Common 的文件...)
关于java - spring boot中的共享gradle项目不包含yml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584671/