Переименование ресурсов в Maven
Я пытаюсь найти способ скопировать файл ресурса в новое имя в целевом каталоге в сборке Maven. Практически все, что я нашел во время поиска, предлагает обходные пути, включающие несколько подкаталогов в /src/main/resources
и выбор между ними через профили. Однако в моем случае это не решает проблему, а именно, что файл, который я хочу, имеет "волшебное" имя.
В основном, я хочу, чтобы файл /src/main/resources/default.DS_Store
был скопирован в ${project.build.directory}/.DS_Store
. Поскольку файл .DS_Store
имеет особое значение в Mac OSX, нежелательно иметь файл с этим именем в исходном дереве и в управлении версиями. Тем не менее, я хочу, чтобы данные в файле находились в исходном дереве и контроле версий и переименовали его во имя "волшебного" имени во время сборки.
Я начинаю думать, что ant - единственный способ сделать это автоматически. Есть ли более простой способ?
Ответы
Ответ 1
Я вижу 2 варианта решения вашей проблемы:
Ответ 2
Использование antrun-maven-plugin упрощает работу, но если вы ищете более mavenish путь, который поддерживается в eclipse m2e, вы можете использовать copy-rename-maven-plugin
<plugin>
<groupId>com.coderplus.maven.plugins</groupId>
<artifactId>copy-rename-maven-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>rename-file</id>
<phase>compile</phase>
<goals>
<goal>rename</goal>
</goals>
<configuration>
<sourceFile>${project.build.outputDirectory}/default.DS_Store</sourceFile>
<destinationFile>${project.build.outputDirectory}/.DS_Store</destinationFile>
</configuration>
</execution>
</executions>
</plugin>
И если у вас есть какие-либо отзывы/проблемы с плагином, вы можете обратиться к https://github.com/coderplus/copy-rename-maven-plugin/
Ответ 3
Пример использования плагина сборки для копирования и/или переименования файла:
pom файл:
<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>test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptors>
<descriptor>src/main/descriptors/example.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
</project>
Файл дескриптора:
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<id>example</id>
<formats>
<format>dir</format>
</formats>
<files>
<file>
<source>src/main/resources/something.properties</source>
<outputDirectory>/</outputDirectory>
<destName>something.properties</destName>
</file>
<file>
<source>src/main/resources/something.properties</source>
<outputDirectory>/</outputDirectory>
<destName>something_en.properties</destName>
</file>
</files>
</assembly>
Ответ 4
Вы можете избежать превышения заголовка Ant с помощью плагина сборки Maven и дескриптор сборки файла.
Ответ 5
У меня была та же проблема, что и при использовании copy-rename-maven-plugin, решила мою проблему
<project>
...
<build>
<plugins>
<plugin>
<groupId>com.coderplus.maven.plugins</groupId>
<artifactId>copy-rename-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>copy-file</id>
<phase>generate-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<sourceFile>src/someDirectory/test.environment.properties</sourceFile>
<destinationFile>target/someDir/environment.properties</destinationFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>