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>
mvn -X может быть более показательным
Многие люди используют maven-antrun-plugin и пишут это на языке ant, чтобы получить переносимое решение.