Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gradle Spring引导自定义配置_Java_Spring_Spring Boot_Gradle_Configuration - Fatal编程技术网

Java Gradle Spring引导自定义配置

Java Gradle Spring引导自定义配置,java,spring,spring-boot,gradle,configuration,Java,Spring,Spring Boot,Gradle,Configuration,我有一个应用程序,它使用mysql数据库来保存信息。我想创建一个使用嵌入式数据库(mariaDB4j)的应用程序版本,并将其作为服务添加到我们的CI环境中,因此当我们通过端到端测试启动此嵌入式版本时,QA团队会得到一个干净的数据库 我在网上读了很多关于这方面的文章,看起来gradle配置是一个不错的选择。我在这上面找到的最接近的是: sourceSets { qaci { java { srcDir 'src/qa/java' }

我有一个应用程序,它使用mysql数据库来保存信息。我想创建一个使用嵌入式数据库(
mariaDB4j
)的应用程序版本,并将其作为服务添加到我们的CI环境中,因此当我们通过端到端测试启动此嵌入式版本时,QA团队会得到一个干净的数据库

我在网上读了很多关于这方面的文章,看起来gradle配置是一个不错的选择。我在这上面找到的最接近的是:

sourceSets {
    qaci {
        java {
            srcDir 'src/qa/java'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
        compileClasspath += sourceSets.main.resources
    }
}

configurations {
    qaciCompile.extendsFrom compile
}

bootRepackage {
    customConfiguration = myCustomConfig
}
不幸的是,
bootRepackage
bootJar
取代。我正在使用gradle spring引导插件
2.0.1.RELEASE
,当我尝试使用
bootJar.customConfiguration
时,我收到一个错误,说这是一个未知属性

另外,
mariaDB4j
需要一个配置类才能正常工作,我已经将它包含在
src/qa/java
中,并创建了一个新的源代码集以便添加


有人知道如何告诉gradle spring引导插件使用自定义配置吗

您考虑过使用spring配置文件吗

它将允许您为一些配置文件(即开发、QA、生产)定义一组不同的值、bean或配置集,您可以使用它们以不同的配置或不同的库运行应用程序

@Configuration
@Profile("production")
public class ProductionConfiguration {}
此类将在.properties或.yml文件中加载为该配置文件设置的所有值

要运行应用程序,您可以传递要用作命令行参数的配置文件

--spring.profiles.active=dev
mariaDB的配置将在特定的配置文件下

例如(如果您使用的是yml):


属于其他配置文件的类和属性将不被处理

将在您提供的本地路径中自动创建文件系统,以便您可以在重新启动/提供给qa时恢复数据

--数据库文件的位置。如果需要从头开始重新创建,请删除此目录

mariaDB4j.dataDir=./data/local
默认值为3306,因此请使用3307,以防它已在此计算机上运行

mariaDB4j.port=3307
app.mariaDB4j.databaseName=app_alpha
spring.datasource.url=jdbc:mariadb://localhost:3307/
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
有关更多信息,请参阅此文档

是的,事实上这就是我目前正在使用的。但是,即使没有使用该代码,我也无法真正适应将其交付生产的情况。如果有人决定更改概要文件的行为,甚至删除注释,这将产生灾难性的影响。这就是我考虑gradle配置的原因,因为这样我就可以将这些代码存储在另一个源代码集中。编写自己的gradle packageJar任务怎么样?不幸的是,
BootRepackage
任务不适用于Springboot 2.0.1.RELEASE,我解释说在我的问题上,在您提供的链接上,它指定您必须创建一个类
EmbeddedMariaDbConfig
,以便它正常工作,这是正确的。但是我想做的是在没有这个类的情况下打包我的生产jar,所以我选择的配置文件并不重要,我的生产jar永远不会使用嵌入式数据库。这就是我寻找gradle源集的原因。这个答案并没有告诉我如何在没有
EmbeddedMariaDbConfig
jar的情况下构建生产jar,以及如何在其上构建一个带有
EmbeddedMariaDbConfig
的开发jar。你解决了这个问题吗?
mariaDB4j.port=3307
app.mariaDB4j.databaseName=app_alpha
spring.datasource.url=jdbc:mariadb://localhost:3307/
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect