Функциональность Parallel Deployment от Tomcat требует, чтобы имя файла .war было в определенном формате.
Например: если у нас запущена версия 1 проекта и нам нужно развернуть версию 2 в горячем режиме, необходимо, чтобы имя .war было «имя-проекта##2.war».
Мы используем в нашем проекте семантическое управление версиями. Итак, наши версии, например, 5.31.6.
Когда мы развертываем новую версию через менеджер Tomcat, мы собираем проект с помощью maven, переименовываем имя файла в project-name##053106.war
и загружаем его на сервер. Этот процесс является ручным и подвержен ошибкам.
Наша версия установлена в pom.xml
следующим образом:
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.group</groupId>
<artifactId>project-name</artifactId>
<version>5.31.6</version>
<packaging>war</packaging>
<name>Project Name</name>
<description>Project Description</description>
...
</project>
Задаем конечное имя в профилях, например:
<profiles>
<profile>
<id>local</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profilelabel>LOCAL</profilelabel>
</properties>
<build>
<finalName>project-name-local</finalName>
</build>
</profile>
<profile>
<id>production</id>
<properties>
<profilelabel>PRODUCTION</profilelabel>
</properties>
<build>
<finalName>project-name</finalName>
</build>
</profile>
</profiles>
Мой вопрос: с приведенными выше примерами, как я могу создать военный файл с окончательным именем, объединенным с номером версии без точек и, если возможно, с каждой «частью» версии «str_pad»ed (5.31.6 становится 053106)?
Чтобы использовать функцию горячего развертывания от Tomcat, необходимо, чтобы номер версии добавлялся к имени файла, поэтому наилучшей версией будет та, которая получит новые сеансы. Я хочу, чтобы в процессе сборки можно было автоматически привязать номер версии к сгенерированному файлу WAR и просто загрузить его через менеджер.
Я хотел бы увидеть некоторую документацию относительно «Функциональности горячего развертывания от Tomcat требует, чтобы имя файла .war было в определенном формате». Я никогда не слышал об этом раньше, поэтому довольно внимательно просмотрел документацию по развертыванию Apache Tomcat и ничего не нашел по этому поводу...
@SteveC после некоторых исследований я думаю, что неправильно использовал термин «горячее развертывание». Глядя на документы, правильным является «Параллельное развертывание», и вот ссылка на документы: tomcat.apache.org/tomcat-8.5-doc/config/… Я должен изменить ее в описании вопроса.
Вы можете использовать плагин gmaven, чтобы изменить project.version
любым желаемым образом и назначить его свойству (все на этапе инициализации). Вот пример,
он обрабатывает версии с частью -SUFFIX
(на всякий случай он обрабатывает случай нескольких дефисов):
<build>
<finalName>yourProjectName-${paddedVersion}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
println('Mangling project version: ' + project.version)
String[] versionParts = project.version.split("-")
paddedVersion = versionParts[0].split("\\.").collect { it.padLeft(2,"0") }.join()
if (versionParts.size() > 1) {
paddedVersion += "-" + versionParts[1..-1].join("-")
}
println('Padded version version: ' + paddedVersion)
project.properties["paddedVersion"] = paddedVersion
</source>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Что вы на самом деле пытаетесь сделать, кроме того, что у вас разные имена? Как правило, лучше иметь один артефакт, который работает везде, а все остальное (например, конфигурацию) использовать вовне.