相关疑难解决方法(0)

在spring boot中从命令行设置活动配置文件和配置位置

我有一个春季启动应用程序.

我的应用程序中有三个配置文件 - > 开发,登台和生产.所以我有3个文件

  1. 应用development.yml
  2. 应用staging.yml
  3. 应用production.yml

我的application.yml驻留在里面src/main/resources.我已将application.yml中的活动配置文件设置为:

spring:
  profiles.active: development
Run Code Online (Sandbox Code Playgroud)

其他3个配置文件特定的配置文件存在于C:\config文件夹中.

我正在使用gradle插件进行eclipse.当我尝试执行" bootRun "时,我在eclipse中的gradle配置中设置命令行参数

 -Dspring.profiles.active=staging -Dspring.config.location=C:\Config
Run Code Online (Sandbox Code Playgroud)

但是,命令行属性没有得到反映,我的活动配置文件总是被设置为开发(这是我在applications.yml文件中提到的那个).此外,不会在C:\ Config文件夹中搜索特定于配置文件的配置文件.

我想我在这里遗漏了一些东西.过去两天我一直试图解决这个问题.但没有运气.我真的很感激任何帮助.

java spring yaml gradle spring-boot

134
推荐指数
11
解决办法
20万
查看次数

通过Gradle运行Java类时传递系统属性和参数的问题

我试图通过Gradle运行命令行Java应用程序作为快速集成测试的一部分.我正在从Maven移植我的构建脚本,这很容易通过exec-maven-plugin.我的两大要求是:

  • 能够将系统属性传递给可执行Java代码
  • 能够将命令行参数传递给可执行Java代码

请注意,我不是试图在构建脚本中读取这些属性,我试图在脚本构建和执行的Java程序中读取它们.

我找到了另外两个SO帖子,它们通过Gradle处理Java程序执行:一个答案主张apply plugin: "application"在构建文件和gradle run命令行中使用,另一个答案提倡该方法以及task execute(type:JavaExec)在构建文件和构建文件gradle execute中使用命令行.我尝试了两种方法,但没有成功.

我有两个问题:

(1)我无法获取Java可执行文件来读取系统属性

我是否这样做:

build.gradle:

apply plugin: 'application'
mainClassName = "com.mycompany.MyMain"
Run Code Online (Sandbox Code Playgroud)

命令行:

gradle run -Dmyproperty=myvalue
Run Code Online (Sandbox Code Playgroud)

或这个:

build.gradle:

task execute (type:JavaExec) {
    main = "com.mycompany.MyMain"
    classpath = sourceSets.main.runtimeClasspath 
}
Run Code Online (Sandbox Code Playgroud)

命令行:

gradle execute -Dmyproperty=myvalue
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,myproperty都无法完成.从开始运行的代码MyMain.main (...)myproperty系统属性读取为null/missing.

(2)我无法传递命令行参数

这可能与第一个问题有关.在exec-maven-plugin,例如,命令行参数本身也是经由系统属性传递英寸 这是Gradle的情况,还是有另一种传递命令行参数的方法?

我如何通过这些变量?另外,使用apply plugin: 'application'或更好task execute (type:JavaExec) …

java gradle

77
推荐指数
2
解决办法
6万
查看次数

如何找出并更改Java Maven用于执行的版本?

运行我们的Maven构建时,我的团队成员在执行时会收到错误.但是,当我们java -version从她的命令行运行时,它表示Java 1.6.0_26.Maven正在使用Java 5,这个错误显然似乎在尖叫.

我如何找出并更改Maven正在使用的Java版本?

3个可能重要的说明:

  1. 这是在命令行执行的,而不是使用Eclipse插件
  2. JAVA_HOME设置为Java 1.6 JDK
  3. 使用Maven 2.2.1

java maven

56
推荐指数
2
解决办法
5万
查看次数

如何使用gradle调试spring应用程序

我正在开发spring应用程序,需要逐步执行控制器方法以查看它是如何工作的.我正在使用eclipse并使用gradle bootRun命令构建我的应用程序.

如何在调试模式下运行它?

我试过gradle bootRun --debug但它只是调试日志,而不是调试模式

我试过gradle help --task bootRun- 这给了我有关任务的信息,我看到了--debug-jvm选项但是当我运行 gradle bootRun --debug-jvm应用程序时无法启动

java eclipse debugging spring gradle

38
推荐指数
4
解决办法
3万
查看次数

Spring启动运行完全可执行的JAR并指定-D属性

Spring Boot Maven和Gradle插件现在可以为Linux/Unix操作系统生成完整的可执行存档.运行完全可执行的JAR就像输入一样简单:

$ ./myapp.jar
Run Code Online (Sandbox Code Playgroud)

我的问题是在这种情况下如何设置-D属性,例如

-Dspring.profiles.active=test
Run Code Online (Sandbox Code Playgroud)

另外,如果服务器没有安装jdk,这个完全可执行的jar仍然可以运行吗?

spring-boot

19
推荐指数
2
解决办法
3万
查看次数

如何使用 spring boot + .yaml 创建配置文件?

我有带有 2 个属性文件的 Spring Boot 服务器:application-local.propertiesapplication-test.properties

在每个文件中,我都有用于开发机器和测试的配置。像这样开始:

-Dspring.profiles.active=local
Run Code Online (Sandbox Code Playgroud)

但是在新的 Spring Boot 项目中,我使用了.yaml配置文件。而且我不明白如何使用profileswith .yaml. 我尝试阅读文档,但什么也不懂。你能一步一步解释该怎么做吗?

我需要两个文件?

application-local.yamlapplication-test.yaml

或者我需要在一个application.yaml文件中写入所有内容?如果在一个文件中,我如何分离配置?这是我的配置:

server:
  path: ***
  port: ***

cxf:
  path: ***

spring.datasource:
  type: com.zaxxer.hikari.HikariDataSource
  driver-class-name: oracle.jdbc.OracleDriver
  url: ***
  username: ***
  password: ***
  hikari:
    minimumIdle: 5
    maximumPoolSize: 20
    idleTimeout: 30000
    poolName: SpringBootJPAHikariCP
    maxLifetime: 2000000
    connectionTimeout: 30000
    connection-test-query: SELECT 1 FROM DUAL

spring.jpa:
  show-sql: false
  database-platform: org.hibernate.dialect.Oracle10gDialect
  properties.hibernate.jdbc.batch_size: 30
  properties.hibernate.cache.use_second_level_cache: false
  hibernate:
    ddl-auto: validate


spring.cache:
  ehcache: …
Run Code Online (Sandbox Code Playgroud)

java yaml spring-boot

7
推荐指数
2
解决办法
1万
查看次数

将 JVM 参数传递给 SpringBoot bootRun Gradle 任务

我想将一些 JVM 参数传递给我的 Gradle bootRun 任务,即-Xbootclasspath. 我已经添加了:

bootRun {
    systemProperties = System.properties
}
Run Code Online (Sandbox Code Playgroud)

到我的build.gradle文件,但当我运行时它不喜欢它:

gw bootRun -Xbootclasspath/p:....
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Unknown command-line option '-X'.
Run Code Online (Sandbox Code Playgroud)

我是否可能错误地运行了这个,或者System.properties不是我正在寻找的正确方法?

java jvm gradle spring-boot

5
推荐指数
1
解决办法
6548
查看次数

调试 gradle bootRun 有 server=n

如果应该调试由 gradle 运行的应用程序,则添加参数

--debug-jvm
Run Code Online (Sandbox Code Playgroud)

调试器将启动一个 jpda-server(因为 server=yes)并挂起直到 eclipse(或其他)附加到套接字。

反过来怎么做?如何告诉 gradle-bootrun 附加到 eclipse-jpda-server?

我试图设置这样的选项:

bootRun {
  jvmArgs=["-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:5005"]
}
Run Code Online (Sandbox Code Playgroud)

但是出现异常:

* What went wrong:
Execution failed for task ':bootRun'.
> The value for property 'enabled' is final and cannot be changed any further.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':bootRun'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:205)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:203)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:184)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114) …
Run Code Online (Sandbox Code Playgroud)

java gradle jpda spring-boot

5
推荐指数
1
解决办法
312
查看次数

标签 统计

java ×7

gradle ×5

spring-boot ×5

spring ×2

yaml ×2

debugging ×1

eclipse ×1

jpda ×1

jvm ×1

maven ×1