2011-06-07 33 views
6

我目前正在使用Maven構建我的Rhino JavaScript項目,下載相關庫,並在運行時管理類路徑。我能夠通過使用Maven的Exec插件,在下面的方式來運行JavaScript的切入點:如何使用Maven類路徑運行Java主類?

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.1</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>java</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <mainClass>org.mozilla.javascript.tools.shell.Main</mainClass> 
       <classpathScope>runtime</classpathScope> 
       <arguments> 
        <argument>path/to/entryPoint.js</argument> 
       </arguments> 
      </configuration> 
     </plugin> 

這個效果很好,但問題是,行家大約需要10秒的時間來啓動,這是關於比我的程序運行時間長10倍。有沒有一種辦法之一:

  1. 提高行家Exec插件的性能,因此,它需要較少的時間來啓動,或
  2. 出口Maven同時會在運行時使用的類路徑,這樣我就可以開始我的程序從腳本?

回答

4
  1. 您可以使用-o/--offline開關告訴Maven來不打擾檢查快照或插件的更新。

  2. 使用appassemblerassembly插件生成啓動腳本,這些腳本將自動(在appassembler的情況下)引用所需的類路徑。

+0

-o似乎沒有影響到maven的啓動性能,但appassembler似乎正是我所期待的第二條款。 – jbeard4 2011-06-07 03:03:50

+0

有沒有辦法自定義appassembler程序的輸出以指定默認參數傳遞給生成腳本中的主類?例如path/to/entryPoint.js在原始問題中。 – jbeard4 2011-06-07 03:14:23

+0

我不這麼認爲,但是你可以編寫[一個調用生成的腳本的包裝腳本](http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/faq.html#ulimit)。或者,你可以打包你自己的啓動腳本,因爲(我認爲)classpath/dependencies並沒有經常改變。 – 2011-06-07 03:17:41