редактировать 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
Запуск не удался, , потому что он пытается использовать ruby
в качестве exec.executable (как я сказалв POM).
Итак, как временно использовать ruby
(для запуска ruby supporting_files/ruby/CreateUnitTests.rb
перед запуском тестов jUnit), но использовать java
в противном случае? Каков «правильный» способ вызова сценариев на этапе генерации-test-sources ?
edit: проблема, похоже, заключается не только в изменении того, какой исполняемый файл вызывается ...
Я написал быструю 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]);
}
}
, что позволило мне избежать измененияисполняемый файл в моем ПОМ:
<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
...