У меня есть приложение JavaEE с Gradle, которое я добавил Dropwizard в соответствии с официальной документацией (для Maven) и другим руководством для Gradle:
https://www.dropwizard.io/1.3.5/docs/getting-started.html
https://karollotkowski.wordpress.com/2015/10/13/run-dropwizard-with-gradle/
Приложение хорошо настроено и работает с Gradle и Dropwizard, но я хочу отладить приложение, используя точки останова, и я не могу это сделать. Я следую этому руководству:
https://medium.com/grandcentrix/how-to-debug-gradle-plugins-with-intellij-eef2ef681a7b
Это выглядит нормально, потому что когда я запускаю команду:
sudo ./gradlew run -Dorg.gradle.debug = true --no-daemon
Gradle ждет, пока я не нажму на конфигурацию удаленной отладки (которую я создал) в IntelliJ, чтобы запустить приложение, поэтому все должно быть в порядке. Тем не менее, он никогда не останавливается в моих точках останова (похоже, он игнорирует их). Любая идея? Я делюсь файлами, которые считаю важными:
build.gradle:
apply plugin: 'com.google.protobuf'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'application'
apply plugin: 'com.github.johnrengelman.shadow'
project.ext {
dropwizardVersion = '1.3.0'
configPath = "$rootProject.projectDir/config/"
}
//
// Loads of repositories and dependencies including dropwizard
//
protobuf {
// Configure the protoc executable
protoc {
// Download from repositories
artifact = 'com.google.protobuf:protoc:3.0.0'
}
generateProtoTasks.generatedFilesBaseDir = 'generated'
generateProtoTasks {
// all() returns the collection of all protoc tasks
all().each { task ->
// Here you can configure the task
}
// In addition to all(), you may get the task collection by various
// criteria:
// (Java only) returns tasks for a sourceSet
ofSourceSet('main')
}
}
mainClassName = "com.company.MyApplication"
run {
args 'server', configPath + ‘myapplication_config.yml'
}
shadowJar {
mergeServiceFiles()
exclude 'META-INF/*.DSA'
exclude 'META-INF/*.RSA'
}
jar {
manifest {
attributes 'Main-Class': mainClassName
}
}
build.dependsOn shadowJar
MyApplicationApplication (приложение Dropwizard):
public class MyApplicationApplication extends Application<MyApplicationConfiguration> {
public static void main(String[] args) throws Exception {
new MyApplicationApplication().run(args);
}
@Override
public void run(MyApplicationConfiguration configuration,
Environment environment) {
environment.jersey().register(new RESTUserBilling());
}
}
MyApplicationConfiguration (конфигурация Dropwizard):
public class MyApplicationConfiguration extends Configuration {
}
myapplication_config.yml:
# Logging settings.
logging:
# The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL.
level: ERROR, DEBUG
# Logger-specific levels.
loggers:
# Sets the level for 'com.example.app' to DEBUG.
com.company: DEBUG
appenders:
- type: console
- type: file
threshold: INFO
logFormat: "%-6level [%d{HH:mm:ss.SSS}] [%t] %logger{5} - %X{code} %msg %n"
currentLogFilename: /var/log/dropwizard/myapplication.log
archivedLogFilenamePattern: /var/log/dropwizard/myapplication-%d{yyyy-MM-dd}-%i.log.gz
archivedFileCount: 7
timeZone: UTC
maxFileSize: 10MB
server:
applicationContextPath: /myapplication
adminConnectors:
-
port: 8091
type: http
applicationConnectors:
-
port: 80
type: http
Удаленная настройка в IntelliJ IntelliJ 2018.2.1 (Community Edition)
Gradle 2.12
Java версия 1.8.0_181
Dropwizard версия 1.3.0