В моем проекте я использую ActiveMQ artemis и Spring Boot. Приложение должно выполняться как служба демона Apache Commons. Я хотел бы использовать свой собственный лаунчер в этом проекте.
Проект имеет следующую конфигурацию Gradle:
buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
maven { url 'https://repo.spring.io/libs-snapshot' }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.0.M7")
}
}
plugins {
id "org.sonarqube" version "2.6.1"
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven-publish'
apply plugin: 'org.springframework.boot'
ext {
commonsDaemonVersion = '1.1.0'
artemis = '2.4.0'
}
dependencies {
compile("org.apache.activemq:artemis-server:${artemis}")
compile("org.apache.activemq:artemis-core-client:${artemis}")
compile("commons-daemon:commons-daemon:${commonsDaemonVersion}")
}
task wrapper(type: Wrapper) {
gradleVersion = '4.4'
}
Поскольку я использую ActiveMQ artemis, я не могу использовать версию 1.5.x плагина Spring Boot Plugin, поскольку его модуль управления зависимостями автоматически понижает apache activeMQ до версии 1.5.5. Поскольку этот проект должен выполняться как служба демона Apache Commons, я должен использовать свой собственный модуль запуска Spring Boot, который позволяет иметь статический модуль запуска и загрузчик классов. Эти два помогают мне остановить уже запущенную службу.
Я попробовал следующую настройку, чтобы добавить свою пользовательскую программу запуска в сгенерированный jar-файл со следующей настройкой. Однако это неправильный способ сделать это, потому что мне нужно вручную добавить имя класса моей программы запуска в файл манифеста.
buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
maven { url 'https://repo.spring.io/libs-snapshot' }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.0.M7")
}
}
plugins {
id "org.sonarqube" version "2.6.1"
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven-publish'
apply plugin: 'org.springframework.boot'
ext {
commonsDaemonVersion = '1.1.0'
artemis = '2.4.0'
}
configurations {
launcher
}
dependencies {
compile("org.apache.activemq:artemis-server:${artemis}")
compile("org.apache.activemq:artemis-core-client:${artemis}")
compile("commons-daemon:commons-daemon:${commonsDaemonVersion}")
launcher("com.mycompany.springboot.launcher:my-custom-launcher:0.1.0-RELEASE")
}
bootJar {
from project.configurations.launcher.each {
from(zipTree(it))
}
manifest {
attributes 'Main-Class': 'com.mycompany.springboot.launcher.CustomLauncher'
}
}
task wrapper(type: Wrapper) {
gradleVersion = '4.4'
}
В версии 1.5.x я мог просто использовать следующую опцию, чтобы добавить свою конфигурацию запуска:
springBoot {
layoutFactory = new com.mycompany.springboot.launcher.CustomLauncherFactory()
}
Есть ли какие-либо настройки, которые я мог бы использовать для добавления своей пользовательской панели запуска с плагином Spring Boot Gradle 2.x, или мне нужно использовать здесь какие-либо обходные пути?
ext['artemis.version'] = '2.4.0'
что позволяет использовать плагин Spring Boot Gradle 1.5.10 в моем проекте (потому что Я могу использовать правильную версию Artemis, которая не будет понижена до 1.5.5). Это означает, что я также могу просто использовать настройку layoutFactory SpringBoot. - person l_mcqueen   schedule 14.02.2018