1) Используйте любой плагин Maven, который может копировать и переименовывать ресурсы.Например, copy-rename-maven-plugin.Сконфигурируйте плагин для копирования всех статических ресурсов, которые вы хотите версии, и поместите их в новый каталог внутри целевого каталога, например target / static_versioned:
<plugin>
<groupId>com.coderplus.maven.plugins</groupId>
<artifactId>copy-rename-maven-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>copy-file</id>
<phase>generate-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<sourceFile>src/main/webapp/css/style.css</sourceFile>
<destinationFile>target/static_versioned/css/style_${project.version}.css</destinationFile>
</fileSet>
<fileSet>
<sourceFile>src/main/webapp/js/app.js</sourceFile>
<destinationFile>target/static_versioned/js/app_${project.version}.js</destinationFile>
</fileSet>
</fileSets>
</configuration>
</execution>
</executions>
</plugin>
2) Настройте maven-war-plugin для добавленияВерсионные статические файлы внутри вашего war-файла:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<webResources>
<resource>
<directory>target/static_versioned</directory>
</resource>
</webResources>
</configuration>
</plugin>
3) Maven копирует версионные и исходные файлы в файл war-результата, поэтому исходные файлы необходимо исключить:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<packagingExcludes>**/css/style.css,**/js/app.js</packagingExcludes>
<webResources>
<resource>
<directory>target/static_versioned</directory>
</resource>
</webResources>
</configuration>
</plugin>
Стоит отметить, что в целевом каталоге по-прежнему есть исходные и версионные файлы, но файл war содержит только версионные файлы.
4) Используйте функцию фильтрации maven-war-plugin для переименования статических ссылок на ресурсы, чтобы все ссылки указывали наресурсы с поддержкой версий:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<packagingExcludes>**/css/style.css,**/js/app.js</packagingExcludes>
<webResources>
<resource>
<directory>target/static_versioned</directory>
</resource>
<resource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
Например, ссылка типа <script type="text/javascript" src="js/app_${project.version}.js"></script>
будет переименована в <script type="text/javascript" src="js/app_1.0-SNAPSHOT.js"></script>
Полный пример приведен здесь: https://github.com/dmitrysobolev/maven-war-plugin-js-versioning-example