Задать вопрос
@Joysi75

Как настроить Maven на копирование во время сборки?

Есть директории, лежащие вне Java -проекта. Это не ресурсы (их надо копировать в директорию, отличную от target\classes).
Maven собирает Jar в target\jfx .
Необходимо по факту окончания сборки через maven чтобы они были скопированы, то есть указываем SourceDir= ~/fluent/mapGr + DestinationDir={project.basedir}/target/jfx/speedmap и вперед.

Спасибо.
  • Вопрос задан
  • 956 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Vamp
@Vamp
Это делается при помощи плагинов. Вот на выбор antrun и maven-resources-plugin:
<build>
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <configuration>
                        <tasks>
                            <copy todir="${project.basedir}/target/jfx/speedmap">
                                <fileset dir="/home/fluent/mapGr"/>
                            </copy>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
                <execution>
                    <id>copy-resources-foreign</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.basedir}/target/jfx/speedmap</outputDirectory>
                        <resources>
                            <resource>
                                <directory>/home/fluent/mapGr</directory>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>


Есть директории, лежащие вне Java -проекта. Это не ресурсы (их надо копировать в директорию, отличную от target\classes).

В вашем случае это всё-таки ресурсы. Просто по умолчанию maven считает ресурсами только контент из директорий src/main/resources и src/test/resources. Вам просто нужно сказать где ещё располагаются ресурсы, необходимые для сборки проекта.

Вообще говоря, не очень хорошо завязываться на внешние по отношению к проекту ресурсы. Это усложняет вхождение новых участников, так как теперь уже недостаточно просто запустить mvn install и получить готовый артефакт. Да и сами потом забудете/запутаетесь, будете тратить время на вспоминание как правильно собирать проект. Хотя, конечно, хозяин - барин.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы