#java #gradle #gradle-multi-project-build
#java #gradle #gradle-сборка для нескольких проектов
Вопрос:
В настоящее время я пытаюсь создать многопроектную сборку с помощью gradle, которая должна создавать несколько файлов ear. Все файлы ear используют общий проект ejb, который объединяет ejb-jar.xml дескриптор развертывания. Этот дескриптор развертывания должен содержать env-запись, которая зависит от ear-проекта.
Вот как выглядит структура проекта:
├───ear-project1
│ build.gradle
├───ear-project2
│ build.gradle
├───ejb-project
│ │ build.gradle
│ └───src
│ └───main
│ └───resources
│ └───META-INF
│ ejb-jar.xml
├───build.gradle
build.gradle (root)
plugins {
id 'java'
}
subprojects {
apply plugin: 'java'
}
build.gradle (ear)
apply plugin: 'ear'
dependencies {
deploy project(':ejb-project')
}
build.gradle (ejb)
import org.apache.tools.ant.filters.ReplaceTokens
ext {
placeholder = 'thisShouldBeSetByTheEar'
}
processResources {
with copySpec {
from 'src/main/resources'
filter(ReplaceTokens, tokens: [replaceMe: placeholder])
}
}
Весь проект должен быть создан одной командой, например gradle ear
.
До сих пор я пытался внедрить свойство через замыкание, но, похоже, это не работает:
deploy project(':ejb-project', { placeholder = 'ear-project1' })
Как я могу настроить проекты ear для установки placeholder
переменной проекта ejb?
Вы можете получить доступ к полному примеру через GitHub: https://github.com/monsieurvader/multiproject-ear
Комментарии:
1. В чем именно заключается вопрос? Пожалуйста, четко сформулируйте проблему.
2. В конце добавлен вопрос, который, как мы надеемся, должен прояснить проблему.