Maven: копирование каталогов с помощью плагина exec - PullRequest
1 голос
/ 05 августа 2011

Я использую 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 ]

1 голос
/ 19 ноября 2011

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

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 голос
/ 03 апреля 2018

Если вы используете 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>.

0 голосов
/ 05 августа 2011
  1. mvn -X может быть более показательным

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

...