我有一个SpringBoot应用程序。项目外部的属性文件(通常不在src/main/resources中)。在使用gradle clean build构建应用程序时,由于代码无法找到属性文件,因此会失败。我尝试了许多命令来传递vm参数,gradle选择了这些参数,但都不起作用。
gradle clean build -Djvmargs="-Dspring.config.location=/users/home/dev/application.properties" //not working
它在测试阶段失败,因为它创建了Spring应用程序上下文,并且无法替换属性占位符。如果我跳过测试作为gradle clean build-x测试,它就会工作。
虽然我可以用java-jar api运行这个应用程序。jar——Spring。配置。位置=文件:/users/home/dev/application。属性
请帮助我如何通过spring.config.location=/user/home/dev/application.properties
在gradle构建中使用命令行,以便构建运行所有JUnit测试
我认为这是一个误解。
验证时:
java-jar api。jar——Spring。配置。位置=文件:/users/home/dev/application。属性
Spring配置。位置在运行时使用或需要,而不是在构建时使用或需要。
当您的Spring Boot应用程序正在构建时,需要application.properties。一种方法可以使用带有模板值的src/main/Resources/application.properties,但在运行时您将忽略它spring.config.location=file...
在这种情况下,正如@nikos-bob所说,您必须使用另一个属性,通常在您的src/test/resources中
我们不希望在主git存储库src/main/resources/application中有硬编码的值。所以第一个想法是使用外部属性。但该文件必须存储在另一个git存储库(相当于主存储库)中或手动创建。
Spring和其他框架为我们提供了另一种选择:使用环境变量。
因此,无需手动外部创建应用程序。属性或将其存储在我们的git存储库中,您的spring boot应用程序始终必须有一个应用程序。具有环境变量的属性:
spring.datasource.url=jdbc:oracle:thin:@${DATABASE_HOST}:${DATABASE_PORT}:${DATABASE_SID}
spring.datasource.username=${DATABASE_USER}
spring.datasource.password=${DATABASE_PASSWORD}
spring.mail.host = ${MAIL_HOST}
spring.mail.username =${MAIL_USERNAME}
spring.mail.password =${MAIL_PASSWORD}
优势:
无需手动创建应用程序。属性使我们能够更轻松地实现devops自动化
没有Spring。配置。位置=文件。。是必需的
运行Gradle的系统属性不会自动传递给测试框架。我认为这是为了尽可能地隔离测试,以便环境中的差异不会导致结果的差异,除非以这种方式明确配置。
如果您查看测试任务的Gradle API,可以看到您可以通过任务(Groovy DSL)上的方法来配置系统属性:
test {
systemProperty "spring.config.location", "/path/to/my/configuration/repository/application.properties"
}
如果还想从Gradle命令行读取系统属性,然后通过测试,则必须首先从Gradle读取该属性,例如作为项目属性,然后将该值传递给测试:
test {
if (project.hasProperty('testconfig')) {
systemProperty 'spring.config.location', project.getProperty('testconfig')
}
}
使用gradle-Ptestconfig=“/path/to/my/configuration/repository/application.properties”构建运行它
但是,如果可以避免的话,我不鼓励在构建命令行上使用系统属性。至少,从长远来看,这会让你非常恼火。如果配置文件可以位于不同机器上的不同位置(取决于您签出存储库的位置,以及它与Spring Boot存储库的相对路径不同),那么您可能需要在personal gradle中指定它。改为属性文件。
如果我是你,我就不会涉及junit测试的实际属性。因此,我将在src/test/resources/application-test下为项目创建一个测试属性。属性,在junit测试中,我将加载测试属性。
例子:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyProperties.class)
@TestPropertySource("classpath:application-test.properties")
public class MyTestExample{
@Test
public void myTest() throws Exception {
...
}
}
我有一个spring启动应用程序,我需要通过进入文件夹目录并通过命令行启动我的web应用程序来启动它。我有一门课叫应用。java及其内部代码如下所示。 我设置了类路径,然后试图运行命令"",但我得到了这个错误消息""
到目前为止,我发现了两种在启动时配置spring boot应用程序的方法,一种使用< code>-D,另一种使用< code> - ,如下所示: 有时,第一个有效,有时第二个有效。正如开发人员所发现的那样,当以下示例中的 方法未给出 参数时,方法不起作用,但 起作用。 而今天,我在命令行配置日志,发现 但 工作。 以上可能有其他原因,可能< code > log back . configurat
问题内容: 在集成到更大的应用程序之前,我正在尝试测试一个概念验证的命令行应用程序。我想要做的是使用此示例使用NSURLSession下载一些数据。但是,如果使用简单的OS X命令行应用程序中给出的示例,则该应用程序将在检索数据之前退出。 如何使用NSURLSession从独立的命令行应用程序下载数据?我所读的内容是使用NSRunLoop,但是我还没有在Swift中找到明确的示例,因此,如果NSR
问题内容: 我正在尝试使用Gradle构建相对简单的JavaFX应用程序。但是,我不知道该怎么做。 我是Gradle的新手,对于简单的(非javafx)项目,我已经成功使用了插件,并构建和打包了库和命令行应用程序。 但是,关于JavaFX,我完全陷入困境。我已经阅读了这篇文章,该文章建议使用该插件,但是我只能找到该插件的源代码,但是没有关于如何实际使用它的文档(在文章中,他们只是从远程URL应用它
我试图使用Gradle构建一个相对简单的JavaFX应用程序。但是,我完全不知道该怎么做。 我对Gradle比较陌生,对于简单的(非JavaFX)项目,我已经成功地使用了插件和来构建和打包库和命令行应用程序。 然而,当涉及到JavaFX时,我完全被卡住了。我读过这篇文章,其中建议使用插件,但是我只能找到这个插件的源代码,而没有关于如何实际获取它和使用它的文档(在文章中,他们只是从远程URL应用它,
我将Spring Boot应用程序打包为可执行JAR。应用程序有一个带有main方法的实用程序类,我想通过命令行调用它,但命令似乎无法在类路径中找到该类。