我想要什么:
我想建立一个自动部署管道-我的计划如下:
我创建了两个.war文件,使用gradle构建脚本将它们称为prod.wartest.war,并将它们部署到我的tomcat服务器。

我的问题:prod.war需要访问生产数据库(mongoprod),并且test.war需要访问测试数据库(mongotest)。

我的尝试:
我以为我可以使用Spring配置文件,而...

  • ...从以下位置更改我的application-context.xml中的一行:<mongo:db-factory id="mongoDbFactory" dbname="mongoprod"/>至:<mongo:db-factory id="mongoDbFactory" dbname="${mongo.db.name}"/>
  • ...在同一文件夹中创建两个文件(<filename>:<content>):application-production.properties:mongo.db.name=mongotestapplication-test.properties:mongo.db.name=mongoprod
  • ...执行带有参数的gradle构建脚本,该脚本可以将配置文件更改为productiontest,然后使用相应的.property文件插入所需的mongo dbname ...但是那是我不走运的地方!
    我试图将其添加到我的build.gradle文件中:bootRun { args = ["--spring.profiles.active=" + profiles] }然后用$ ./gradlew bootRun -Ptest运行它
    但我只是得到错误:Main class name has not been configured and it could not be resolved除了我以前没有使用bootRun之外,到目前为止只有一个war任务可以创建我的.war文件:war { archiveName = 'application.war' dependsOn 'lessc', 'webpack' from "$buildDir/webapp" exclude 'WEB-INF/js/main.js' rename 'main\\.min\\.js', 'main.js' }

  • 有谁知道我如何解决我的问题或可以给我有用的信息?

    最佳答案

    您需要提供一个由bootRun任务运行的主类名称,例如:

    springBoot {
        mainClassName = 'org.baeldung.DemoApplication'
    }
    

    您可以在thos tutorial中了解更多信息

    更新:

    可以如下配置应用程序插件
    application {
        mainClassName = 'org.gradle.sample.Main'
    }
    

    正如plugin docs中所说

    关于spring - 通过构建脚本更改mongo dbname,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55834913/

    10-11 22:16
    查看更多