Как скопировать README.md в src/main/resources?
Я хочу показать README.md
Файл, как страница справки в моем веб-приложении. Чтобы не создавать дубликаты, мне нужно скопировать mvn
из пути проекта в ресурсы.
Как я могу это сделать?
Любая идея?
Я пытался:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<!-- this is important -->
<overwrite>true</overwrite>
<!-- target -->
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<!-- source -->
<directory>/</directory>
<include>
<filter>**/README.md</filter>
</include>
</resource>
</resources>
</configuration>
</plugin>
3 ответа
Самое простое решение - переместить соответствующий файл (ы) в src/main/resources
Папка, тогда как второе решение может быть так:
<build>
<resources>
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>README.md</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
Нет необходимости настраивать плагин maven-resources. Это может быть обработано обычным жизненным циклом и обработкой ресурсов. Единственное, что вам может понадобиться - это папка, в которой README.md
расположен. Если вам нравится фильтрация, вам нужно добавить <filtering>true</filtering>
часть также.
Копирование чего-либо через Maven во время сборки в src/**
В целом это плохая идея, потому что эти папки контролируются системами контроля версий, что приведет к незафиксированным изменениям, которые вам не нравятся.
Примечание. Было бы разумно проверить наличие последних версий плагинов (причина 2.3 - 2008!). Список текущих версий плагинов можно найти здесь: http://maven.apache.org/plugins/
Это работает для меня в одном из моих проектов:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<!-- when to execute copy operation -->
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${basedir}/pathTo.MD</directory>
</resource>
</resources>
<overwrite>true</overwrite>
<outputDirectory>${project.build.directory}/${project.build.finalName}/classes</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
Я вижу, что у меня есть фаза и цель из вашей версии. Я также использовал переменные для выходного местоположения.
Я бы порекомендовал вам быть более равным этому примеру: http://maven.apache.org/plugins/maven-resources-plugin/examples/copy-resources.html С "более равным" я имею в виду как использование <executions>
тег.
Вы можете, конечно, пропустить такие вещи, как <id>
а также filtering
,
Следующее работало хорошо для меня:
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>myID</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/extra-resources</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>src</directory>
<!-- Details about filtering: http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html -->
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
...
</build>
...
</project>