Maven: копирование каталогов с помощью плагина exec

Я использую Maven 3.0.3. У меня проблемы с использованием плагина Maven exec для копирования содержимого одного каталога в другой. К сожалению, когда я включаю этот плагин в мой pom.xml...

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.1.1</version>
    <configuration>
        <executable>cp</executable>
        <arguments>
            <argument>-r</argument>
            <argument>web-app/*</argument>
            <argument>src/main/webapp</argument>
        </arguments>
    </configuration>
    <executions>
        <execution>
            <phase>verify</phase>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Это не работает Я получаю ошибку ниже...

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.1.1:exec (default-cli) on project jx: Result of /bin/sh -c cd /Users/davea/Documents/workspace/mycoUSA2/Technology/nna/myco2usa/jx && cp -r 'web-app/*' src/main/webapp execution is: '1'. -> [Help 1]

Кто-нибудь знает, как я могу изменить мою конфигурацию плагина, чтобы скопировать содержимое одного каталога в другой? Спасибо, Дэйв

3 ответа

Если вы используете bash, попробуйте следующее:

<executable>bash</executable>
<arguments>
    <argument>-c</argument>
    <argument>cp -r web-app/* src/main/webapp</argument>
</arguments>

Это порождает новый Bash и дает ему команду cp -r web-app/* src/main/webapp выполнить.

Вы также можете проверить, работает ли он для вас, сначала введя его в обычное окно терминала:

bash -c "cp -r web-app/* src/main/webapp"

Обратите внимание, что " Знаки имеют значение как exec-maven-plugin вставляет их автоматически, поэтому они не включены в <argument>-тег.

Обратите внимание на команду, которую он выполнил. Из вывода ошибок:

cp -r 'web-app/*' src/main/webapp

Обратите внимание, в частности, на 'web-app/*' файл, который он пытался скопировать. Поскольку он привел этот аргумент cp Команда ищет определенный файл с именем * в каталоге веб-приложения. Поскольку у вас нет файла с таким именем, он вышел с кодом ошибки 1,

У maven-resources-plugin есть цель, предназначенная для выполнения этой задачи. Почему бы не попробовать? Было бы дополнительным преимуществом сделать вашу платформу сборки независимой.

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/src/main/web-app</outputDirectory>
                <resources>
                    <resource>
                        <directory>web-app</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. mvn -X может быть более показательным

  2. Многие люди используют maven-antrun-plugin и пишут это на языке ant, чтобы получить переносимое решение.

Другие вопросы по тегам