Плагин Maven exec строит УСПЕХ, даже если исполняемый файл не работает в Windows

У меня есть проект maven, в котором я запускаю файл Windows .bat с помощью плагина maven exec. Проблема в том, что даже если выполнение bat завершается неудачно (т. е. код выхода равен -1), сборка проекта завершается УСПЕХОМ.

Вот мой определенный плагин:

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>exec-maven-plugin</artifactId>
   <version>1.4.0</version>
   <executions>
       <execution>
           <phase>compile</phase>
           <goals>
               <goal>exec</goal>
           </goals>
           <configuration>
               <executable>run.bat</executable>
           </configuration>
       </execution>
   </executions>
</plugin>

Обратите внимание, что такое же поведение, как и ожидалось, если я выполняю его в Unix (т.е. выполнение файла .sh и сборка завершаются неудачно).


person vadim    schedule 04.09.2015    source источник


Ответы (1)


См. noahlz answer на вопрос Запуск пакетного сценария Windows с использованием подключаемого модуля Maven exec...:

Пакетные файлы Windows не являются исполняемыми. Это сценарии, запускаемые исполняемым файлом cmd.

... короткая версия: это не проблема с Maven, это проблема с платформенно-зависимым характером выполнения команды exec().

Если команда в вашем run.bat устанавливает %ERRORLEVEL%, это устанавливается в выполняющемся CMD, но не передается вызывающему CMD, то есть плагину Maven Exec. Выход из run.bat с помощью EXIT %ERRORLEVEL% явно должен помочь.

person Gerold Broser    schedule 05.09.2015
comment
Gerold Broser, спасибо, что указали на ответ noahlz (на самом деле я его уже нашел). К сожалению, выход с %ERRORLEVEL% не помогает. Поэтому я последовал совету noahlz разобрать сценарий .bat на его настоящие команды и запустить его непосредственно из подключаемого модуля exec. - person vadim; 07.09.2015