Как мне вызвать скрипт ruby ​​как часть процесса сборки Maven? - PullRequest
2 голосов
/ 10 августа 2011

редактировать 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 ...

1 Ответ

1 голос
/ 12 августа 2011

Отсутствие <id> привело к тому, что моё настроенное исполнение стало значением по умолчанию. Вот исправление:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
            <execution>
                <!-- use ruby to generate some jUnit tests during generate-test-sources -->
                <id>generate-test-sources</id>
                <configuration>
                    <executable>ruby</executable>
                    <workingDirectory>supporting_files/ruby</workingDirectory>
                    <arguments>
                        <argument>CreateUnitTests.rb</argument>
                    </arguments>
                </configuration>                    
                <phase>generate-test-sources</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
            </execution>
        </executions>
    </plugin>          
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...