gpt4 book ai didi

java - spring boot中的共享gradle项目不包含yml文件

转载 作者:行者123 更新时间:2023-12-02 09:02:48 25 4
gpt4 key购买 nike

我有项目AB两者都有 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);
}
}

哪里CommonAppcommmon 中的一个主类项目。这个common主文件如下:

    @SpringBootApplication
public class CommonApp {

public static void main(String[] args) {
SpringApplication.run(CommonApp.class, args);
}
}

项目AB编译得很好,但是全部 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/

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