it-roy-ru.com

Как скопировать ресурс в целевой каталог src с помощью Maven?

В настоящее время я работаю над существующим проектом, который имеет файл pom.xml со следующим:

<resources>
    <resource>
        <filtering>false</filtering>
        <directory>src</directory>
        <includes>
            <include>**/*.properties</include>
        </includes>
    </resource>
</resources>

В базовом пути у меня есть каталог под названием properties, который содержит файлы свойств. Я хочу скопировать при упаковке всех файлов свойств, содержащихся в свойствах/в моем каталоге src (в противном случае программа потерпит крах из-за отсутствующих файлов конфигурации).

Итак, мой вопрос: 

Как я могу, с Maven включить файлы ресурсов, которые не находятся в каталоге src?

Я пытаюсь это, но это не похоже на работу:

<resources>
    <resource>
        <filtering>false</filtering>
        <directory>src</directory>
        <includes>
            <include>**/*.properties</include>
            <include>../properties/**</include>
        </includes>
    </resource>
</resources>

Спасибо за вашу помощь.

11
stankoua

Если ваша файловая структура выглядит следующим образом: Стандартная структура каталогов

enter image description here

Тогда вам не нужно добавлять ресурсы Elemt. Maven копирует по default все файлы и папки, расположенные в папке/src/main/resources, в папку сборки и находит их в корне скомпилированных файлов classpath.
если у вас есть, например, файл с именем configuration.properties, расположенный в /src/main/resources/configuration.properties, то при запуске mvn clean compile этот файл будет скопирован в ваш /target/classes/configuration.properties так что если вы удалите эту часть, файлы будут расположены там, где вы хотите их

<resource>
    <filtering>false</filtering>
    <directory>src</directory>
    <includes>
        <include>**/*.properties</include>
    </includes>
</resource>
20
zpontikas

Перенося проекты из ant в maven без изменения структуры проекта, установите свой sourceDirectory testSourceDirectory в сборке и используйте плагин maven-resource-plugin, как следует позаботиться о том, на каком этапе выполнения задач вы выполняете. 

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources01</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/classes</outputDirectory>
                        <encoding>UTF-8</encoding>
                        <resources>
                            <resource>
                                <directory>${basedir}/src</directory>
                                <includes>
                                    <include>**/*.properties</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
                <execution>
                    <id>copy-resources02</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/build/lib</outputDirectory>
                        <encoding>UTF-8</encoding>
                        <resources>
                            <resource>
                                <directory>${basedir}/target/</directory>
                                <include>*.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
9
aberes

Чтобы скопировать все из источника в место назначения, я использовал следующее

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/classes/static/</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${basedir}/gui/build/</directory>
                                <includes>
                                    <include>**/*.*</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
0
Sankarganesh Eswaran