изменить 2: Я нашел проблему. Быстрый ответ заключается в том, что проблема заключалась в отсутствии <id>
для моего недавно настроенного выполнения. Я оставлю вопрос здесь на случай, если он поможет кому-то еще.
У меня есть скрипт ruby, который генерирует некоторые исходные файлы jUnit.
Я пытаюсь использовать exec-maven-plugin для вызова этого ruby-скрипта на этапе генерации исходников жизненный цикл по умолчанию. Вот что я добавил в свой POM для достижения этой цели:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>ruby</executable>
<workingDirectory>supporting_files/ruby</workingDirectory>
<arguments>
<argument>CreateUnitTests.rb</argument>
</arguments>
</configuration>
</plugin>
Кажется, это работает, когда я делаю «Очистить и собрать основной проект» в netbeans (clean install
), но когда я запускаю проект (process-classes org.codehaus.mojo:exec-maven-plugin:1.1.1:exec
со свойствами:)
exec.classpathScope=runtime
exec.args=-enableassertions -classpath %classpath org.example.MyProject.App
exec.executable=java
Запуск завершается неудачно, потому что он пытается использовать (как я сказал в POM).ruby
в качестве exec.executable
Итак, как мне временно использовать Каков "правильный" способ вызова скриптов на этапе генерации тестовых источников? эм>?ruby
(для запуска ruby supporting_files/ruby/CreateUnitTests.rb
перед запуском тестов jUnit), но использовать java
в противном случае?
редактировать: проблема, похоже, больше, чем просто изменение того, какой исполняемый файл вызывается...
Я написал быструю java-программу, которая просто вызывает интерпретатор ruby, передавая его (имя файла ruby), полученное в качестве аргумента командной строки:
import java.io.IOException;
public class RunRuby {
public static void main(String args[]) throws IOException {
Runtime run = Runtime.getRuntime();
run.exec("ruby "+args[0]);
}
}
что позволило мне избежать изменения исполняемого файла в моем POM:
<plugin>
<!-- use ruby to generate some jUnit tests -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<phase>generate-test-sources</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<workingDirectory>supporting_files/ruby</workingDirectory>
<arguments>
<argument>RunRuby</argument>
<argument>CreateUnitTests.rb</argument>
</arguments>
</configuration>
</plugin>
Некрасиво, я знаю. Но в любом случае, очистка/сборка по-прежнему работает, как и ожидалось, но «прогон» по-прежнему не работает! Вот сообщение об ошибке:
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.1.1:exec (default-cli) on project MyProject: Result of cmd.exe /X /C "java -enableassertions -classpath C:\Dropbox\dev\java\MyProject\target\classes;C:\Users\username\.m2\repository\LOTS\OF\JARS org.example.MyProject.App" execution is: '-1'. -> [Help 1]
Итак, мы вернулись к запуску java
, но все еще терпят неудачу. Я заметил одну странную вещь: он выполняет цель org.codehaus.mojo:exec-maven-plugin:1.1.1:exec
, хотя в POM я говорю использовать версию 1.2
...