Копирование нескольких каталогов ресурсов в независимые целевые каталоги с помощью maven
Плагин ресурсов Maven:
Эта цель требует, чтобы вы настраивали ресурсы для копирования и указывали outputDirectory.
Скопируйте два (или более) внешних каталога ресурсов в basedir
в каталог вывода сборки с помощью maven (см. blah
и uggh
).
${basedir}/
- pom.xml
- blah/
- uggh/
- src/
- main/..
- test/..
- target/
- classes/..
- blah/
- uggh/
Например, задайте структуру каталогов выше copy blah
и uggh
в целевой каталог, используя maven. Скопировать одно или другое, однако плагин принимает только один файл outputDirectory. Если вы укажете каталог target
и оба каталога как ресурсы, то содержимое каждой директории будет скопировано в target
, но не сами каталоги.
Дополнительное использование плагина перезаписывает исходное. Кроме того, я попытался указать весь basedir
и включить только нужные каталоги. Это ничего не копирует.
Вот пример копирования одного каталога:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/blah</outputDirectory>
<resources>
<resource>
<directory>blah</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Ответы
Ответ 1
Здесь заканчивается файл:
<outputDirectory>${basedir}/target/blah</outputDirectory>
Здесь он копируется из:
<directory>src/main/otherresources</directory>
Там будет тег <include>
или <includes>
, чтобы сообщить имя файла (ов)
Множественные
Для нескольких папок вам нужно несколько <execution>
с разными <id>
:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources-1</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/blah</outputDirectory>
<resources>
<resource>
<directory>blah</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-resources-2</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/ughh</outputDirectory>
<resources>
<resource>
<directory>ughh</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Ответ 2
Для меня это хорошо работает в Maven 3:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>custom-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<resources>
<resource>
<targetPath>${basedir}/target/blah</targetPath>
<directory>blah</directory>
<filtering>true</filtering>
</resource>
<resource>
<targetPath>${basedir}/target/uggh</targetPath>
<directory>uggh</directory>
<filtering>false</filtering>
</resource>
<encoding>UTF-8</encoding>
</configuration>
</execution>
</executions>
</plugin>
Ответ 3
Это более простое решение, которое я нашел, и оно работает...
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>${basedir}/src/main/java/org/mc2/mymusic/gui/main/Menu/resources</directory>
<targetPath>${basedir}/target/classes/org/mc2/mymusic/gui/main/Menu/resources</targetPath>
<filtering>false</filtering>
</resource>
</resources>
</build>
Marco
Ответ 4
Вы можете использовать шаблоны ant -style
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<resources>
<resource>
<directory>${basedir}</directory>
<includes>
<include>blah/**</include>
<include>uggh/**</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Ответ 5
Чтение вашего примера. Я не думаю, что вам нужно включить & настроить плагин maven-resource.
Просто добавьте эти элементы ресурсов в <build><resources/>
-tag. Смотрите http://maven.apache.org/ref/3.1.1/maven-model/maven.html#class_resource, которые можно использовать в других тегах.
Ответ 6
<resources>
<resource>
<directory>${basedir}/src/scripts</directory>
<includes>
<include>data-octopus.ps1</include>
</includes>
<targetPath>${basedir}/target/data</targetPath>
</resource>
<resource>
<directory>${basedir}/src/scripts</directory>
<includes>
<include>service-octopus.ps1</include>
</includes>
<targetPath>${basedir}/target/service</targetPath>
</resource>
</resources>
</plugins>
...
</plugins>
Ответ 7
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<targetPath>${basedir}/target</targetPath>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<targetPath>${basedir}/target/classes</targetPath>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>jks</nonFilteredFileExtension>
</nonFilteredFileExtensions>
<executions>
<execution>
<id>copy-resources-1</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
</execution>
</executions>
</configuration>
</plugin>
</plugins>
![Maven - Copying resources into multiple targets]()
Ответ 8
Maven скрывает все, чтобы было проще кодировать. Есть несколько способов добиться этого.
- Отредактируйте выполнение по умолчанию в плагине ресурсов. (Самый простой) Это также может быть написано с использованием тега include или других ресурсов.
- Пишите разные исполнения в плагине ресурсов.
- Используйте плагин Antrun. (Вы могли бы также написать всю сборку в муравье)
- Maven Копирование-переименование плагина.
- И много других способов, которые я здесь не упоминаю....
Изменить значение по умолчанию plugin--
<resources>
<resource>
<directory>${basedir}<directory>
<includes>
<include>blah</include>
<include>ughh</include>
</includes>
<resource>
<resources>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<outputDirectory>${basedir}/target</outputDirectory>
</configuration>
</plugin>
</plugins>