Я видел этот пост Многопроектный дистрибутив Gradle , но все еще есть некоторые сомнения.
Я хотел бы создать следующий макет проекта
root
|--lib-java-module
|--spring-boot-module
|--3PP_A_module # not java
| |-- custom scripts, config
|--3PP_B_module # not java
| |-- custom scripts, config
|--dist-module
Как вы уже догадались, я хочу, чтобы dist-модуль собирал myapp-dist.tar.gz с помощью libjava.jar, sprintbootapp.jar, 3pp-a.tar, 3pp-b.tar.
myapp-dist.tar.gz
libjava.jar
sprintbootapp.jar
3pp-a.tar
3pp-b.tar.
3pp-a-module и 3pp-b-module содержат только некоторые файлы конфигурации и сценарии запуска. Нет Java или какой-либо скомпилированный код. Как упаковать их отдельно в tar-файлы (без сжатия)?
Как определить зависимости в dist-module от других модулей? Можно ли собрать другие модули при запуске сборки из dist-module?
Обновление:
Я настроил свой тестовый проект на основе ответа @ marco-r, и он работает, за исключением упаковки файла войны. Оформить заказ на тестовый проект от github https://github.com/KiranMohan/study-spring-boot.
Это интересная настройка проекта.
include ':sb-2.1-multi-package', ':sb-2.1-multi-package:hello-rest-lib',
':sb-2.1-multi-package:hello-rest-standalone-jar',
':sb-2.1-multi-package:hello-rest-war'
include 'sb-2.1-3pp-resources'
include 'sb-2.1-build'
Однако добавить hello-rest-war в sb-2.1-build.tar.gz не удается.
Вместо военных файлов, это зависимости, которые упаковываются.
dependencies {
archivesDeps project(path: ':sb-2.1-3pp-resources', configuration: 'archives')
javaDeps project(":sb-2.1-multi-package:hello-rest-war")
}
...
task copyJavaDeps(type: Copy) {
inputs.files(configurations.javaDeps)
from configurations.javaDeps
into "${ARCHIVE_DIRECTORY}/lib"
}
...
// create distribution bundle
distributions {
main {
contents {
from ARCHIVE_DIRECTORY
into "/springapp/multimodule"
}
}
}
Содержимое упаковки
springapp/multimodule/lib/classmate-1.4.0.jar
springapp/multimodule/lib/hello-rest-lib-0.0.1-SNAPSHOT.jar
springapp/multimodule/lib/hibernate-validator-6.0.16.Final.jar
...
springapp/multimodule/lib/tomcat-embed-websocket-9.0.17.jar
springapp/multimodule/lib/validation-api-2.0.1.Final.jar
springapp/multimodule/sb-2.1-3pp-resources/config/3pp.json
Как упаковать файл war (модуль hello-rest-war) и без всех переходных зависимостей?