У меня есть следующий плагин для запуска скрипта .sh
:
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<executions>
<execution>
<id>deploy-bundles</id>
<phase>install</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${basedir}/deploy.sh</executable>
<successCodes>
<successCode>0</successCode> <-- Not working
</successCodes>
</configuration>
</execution>
</executions>
</plugin>
который копирует некоторые папки и файлы в определенные места. Оно работает. Однако на всякий случай я хочу иметь механизм отказа при ошибке. У меня уже есть команда set -e
в моем сценарии .sh
, но я тоже хочу решение maven. Я слышал, что существует тег под названием successCodes
. попробуй включить. Но пока не повезло. Может ли кто-нибудь указать правильный способ сделать это?
Редактировать: Мой скрипт .sh
выглядит так:
cp ../template/config.properties $component/conf
cp ../../runtime/group1/group1.mw/conf/log4j.xml $component/conf
# if the component is planning, create an additional folder called plans
if [[ $component == *".planning"* ]]
then
mkdir -p $component/plans
# copy all the plans here
cp ../../mission.planning/plans/* $component/plans
fi
где ожидается сбой в случае отсутствия этих папок/файлов. Итак, в качестве теста я вручную меняю пути выше и ожидаю, что это не удастся. Он не выполняет процесс выполнения и сообщает мне об ошибке (поскольку у меня есть команда set -e
в сценарии .sh
), однако maven сообщает об «успехе».
set -e
в вашем сценарии оболочки, затем вы включаете сценарий оболочки, но в нем нетset -e
. Вы пропустили несколько строк из сценария оболочки, который вы включили? - person rjmunro   schedule 01.10.2020