Я создаю файл EAR из внешних зависимостей с помощью Gradle следующим образом:
...
dependencies {
...
deploy group: 'xx.xxx.xxx.xxx', name: 'war-name', version: '0.3.0', ext: 'war'
...
}
ear {
deploymentDescriptor {
webModule("war-name-0.3.0.war", "/war-name")
}
}
...
Конфигурация уха достигает цели, чтобы не указывать номер версии в пути HTTP-конечных точек. Это решение предлагается в Невозможно настроить web-uri с плагином уха gradle для включения войны из репозитория maven .
Пока все работает нормально. Однако, если я сделаю то же самое для файла WAR с версией SNAPSHOT, конфигурация webModule больше не будет работать, поскольку имя файла war содержит отметку времени SNAPSHOT, а не вызывается точно так же, как версия:
...
dependencies {
...
deploy group: 'xx.xxx.xxx.xxx', name: 'war-name', version: '0.3.0-SNAPSHOT', ext: 'war'
...
}
ear {
deploymentDescriptor {
// This fails, because the war file does not have this exact name, but instead contains
// the timestamp of the SNAPSHOT's buildtime.
webModule("war-name-0.3.0-SNAPSHOT.war", "/war-name")
}
}
...
Если я сделаю это выше, результирующий application.xml
будет содержать следующие записи:
<module>
<web>
<web-uri>war-name-0.3.0-20200714.134805-4.war</web-uri>
<context-root>war-name-0.3.0-20200714.134805-4</context-root>
</web>
</module>
<module>
<web>
<web-uri>war-name-0.3.0-SNAPSHOT.war</web-uri>
<context-root>/war-name</context-root>
</web>
</module>
Я пытаюсь добиться, чтобы он сгенерировался вот так (в основном смесь из двух описаний модулей выше):
<module>
<web>
<web-uri>war-name-0.3.0-20200714.134805-4.war</web-uri>
<context-root>/war-name</context-root>
</web>
</module>
Думаю, мне нужно узнать используемую временную метку, а затем сделать это следующим образом:
ear {
deploymentDescriptor {
webModule("war-name-" + TIMESTAMP_OF_SNAPSHOT + ".war", "/war-name")
}
}
...
Однако я немного потерялся о том, как я могу найти метку времени точной SNAPSHOT-версии, которая упакована в EAR. Любые идеи? Спасибо за помощь!