编辑2:我发现了这个问题。快速回答是缺少<id>
为我新配置的执行导致了问题。如果它帮助别人,我会在这里留下问题。作为Maven构建过程的一部分,我如何调用ruby脚本?
我有一个ruby脚本,它会生成一些我的jUnit源文件。
我想在default lifecycle的generate-sources阶段使用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
暂时(运行JUnit测试之前运行
ruby supporting_files/ruby/CreateUnitTests.rb
),但使用
java
否则?
编辑:这个问题似乎不仅仅是改变被称为其可执行更多...
我写了一个快速的Java程序,它只是调用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
...
好像问题不只是exec.executable,我将修改我的问题.. – MrDrews