Переименование статических файлов в maven war build - PullRequest
0 голосов
/ 10 декабря 2011

Я пытаюсь найти способ, с помощью которого я мог бы переименовать статические файлы, которые есть в моем веб-проекте, все они одновременно.

Именно то, что мне нужно, - уметь фильтровать.все мои статические имена файлов для добавления номера версии или чего-то подобного, чтобы избежать их кэширования браузерами.

Что-то вроде конвертации custom.css в custom-1.23.css, где 1.23 будет значением данного фильтра,

Это поведение выглядит очень похоже на то, что плагин ресурсов делает с содержимым файлов, но я не смог найти способ сделать то же самое с именами файлов.

Кто-нибудь знает что-то подобное?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Вы можете изменить каталог, из которого они обслуживаются, а не имя файла, например,

/ статический / $ {версия} /custom.css

Плагин ресурсов позволит вам изменить целевой каталог во время войны.

0 голосов
/ 13 мая 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...