Лучшие практики для копирования файлов с Maven - PullRequest
176 голосов
/ 25 февраля 2009

У меня есть файлы конфигурации и различные документы, которые я хочу скопировать из среды dev в каталог dev-server с помощью Maven2. Как ни странно, Maven не кажется сильным в этой задаче.


Некоторые из вариантов:

  • Простое использование задачи copy в Maven

<copy file="src/main/resources/config.properties" tofile="${project.server.config}/config.properties"/>

  • Используйте плагин Ant для запуска копирования из Ant.

  • Создайте артефакт типа zip рядом с «основным» артефактом POM, который обычно имеет тип jar , затем unpack , который артефакт из хранилища в целевой каталог.

  • плагин maven-resources , как указано ниже.

  • Плагин Maven Assembly - но для этого требуется много ручных определений, когда я хочу сделать что-то просто и "условно".

  • На этой странице даже показано, как создать плагин для копирования!

  • плагин maven-upload , как указано ниже.

  • плагин maven-dependency-plugin с copy , как указано ниже.


Все это кажется излишне специальным: Maven должен превосходно выполнять эти стандартные задачи без суеты и беспокойства.

Любой совет?

Ответы [ 13 ]

2 голосов
/ 31 марта 2009

Другой способ - объединить эти вещи в артефакт, используя плагин сборки. Затем вы можете использовать плагин зависимости, чтобы распаковать эти файлы, куда вы хотите. В плагине зависимостей также есть цели копирования для копирования артефактов.

1 голос
/ 12 октября 2010

Мне удалось собрать воедино несколько разных источников для этого ответа:

...
<repository>
    <id>atlassian</id>
    <name>Atlassian Repo</name>
    <url>https://maven.atlassian.com/content/repositories/atlassian-public</url>
</repository>
...
<dependency>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-upload-plugin</artifactId>
    <version>1.1</version>
</dependency>
...
<plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-upload-plugin</artifactId>
    <version>1.1</version>
    <configuration>
        <serverId>jira-repo</serverId>
        <resourceSrc>
            ${project.build.directory}/${project.build.finalName}.${project.packaging}
        </resourceSrc>
        <resourceDest>opt/jira/webapps</resourceDest> <!-- note: no leading slash -->
        <url>scp://root@jira</url>
    </configuration>
</plugin>
...

С ~/.m2/settings.xml:

...
<servers>
  <server>
    <id>jira-repo</id>
    <username>myusername</username>
    <password>mypassword</password>
  </server>
</servers>
...

Затем выполните команду: (-X для отладки)

mvn -X upload:upload

0 голосов
/ 13 августа 2009

Подводя итог некоторым из приведенных выше прекрасных ответов: Maven предназначен для сборки модулей и копирования результатов в репозиторий Maven. Любое копирование модулей в каталог развертывания / установки-ввода должно выполняться вне контекста основных функций Maven, например, с помощью команды Ant / Maven copy .

...