我正在开发spring应用程序,需要逐步执行控制器方法以查看它是如何工作的.我正在使用eclipse并使用gradle bootRun
命令构建我的应用程序.
如何在调试模式下运行它?
我试过gradle bootRun --debug
但它只是调试日志,而不是调试模式
我试过gradle help --task bootRun
- 这给了我有关任务的信息,我看到了--debug-jvm
选项但是当我运行
gradle bootRun --debug-jvm
应用程序时无法启动
我有一个build.gradle
创建 javaWAR
文件的文件。该文件用于 Docker 多阶段构建的一个阶段,以生成我在生产、暂存等中使用的 Docker 映像(配置文件/机密在映像之外)。
但是在开发中,虽然大部分时间我使用普通构建来生成WAR文件(或分解的WAR),并且它工作正常,但有时我只想在我的项目中执行带有主类的单个java文件。
我实现了将以下内容添加到文件中:
task execFile(type: JavaExec) {
main = mainClass
classpath = sourceSets.main.runtimeClasspath
if (System.getProperty('debug', 'false') == 'true') {
jvmArgs "-Xdebug", "-agentlib:jdwp=transport=dt_socket,address=8788,server=y,suspend=y"
}
systemProperties System.getProperties()
}
Run Code Online (Sandbox Code Playgroud)
然后我可以执行文件传递系统属性:
gradle execFile -PmainClass=com.mysite.MyClass -Dsomeprop=somevalue
Run Code Online (Sandbox Code Playgroud)
如果我想调试我运行:
gradle execFile -PmainClass=com.mysite.MyClass -Dsomeprop=somevalue -Ddebug=true
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以执行(和调试)单个文件,这在开发过程中的某些情况下非常有用,但问题是即使我没有execFile
明确运行,也会执行此代码。
这会在构建和生成 WAR 文件时导致错误,所以我正在做的是注释这些行,在运行单个文件时取消注释,并在运行文件后再次注释(当我记得时),然后再推送git repo(否则docker 构建过程以错误告终)。
这很糟糕,我知道。
根据我的理解,该代码在配置阶段运行,为了使代码在任务执行中运行,我可以将代码包含在doLast
方法中(或使用简写<<
):
为什么 gradle 在 gradle.build 中运行每个任务
但在这种情况下,我得到了错误No main …