java - java如何將 ruby 腳本作為 Maven 構建過程的一部分調用?

  显示原文与译文双语对照的内容
100 4

我發現了問題的 快速回答是,我新配置的執行缺少 <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中執行"清理並構建主項目"時,這似乎是工作的,但是當我運行這個項目(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那麼,在generate-test-sources階段,調用腳本的方式是什麼?

收費:問題似乎不僅僅是改變正在被調用的可執行文件。

我寫了一個快速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:DropboxdevjavaMyProjecttargetclasses;C:Usersusername.m2repositoryLOTSOFJARS org.example.MyProject.App" execution is: '-1'. -> [Help 1]

所以,它又回到了運行 java,但仍然失敗。我注意到的一個奇怪的事情是它正在執行目標org.codehaus.mojo:exec-maven-plugin:1.1.1:exec即使在POM中,我也告訴它使用版本 1.2

时间:原作者:0个回答

...