2011-06-07 23 views
6

Actualmente estoy usando Maven para construir mi proyecto Rhino JavaScript, descargar bibliotecas dependientes y administrar el classpath en tiempo de ejecución. Soy capaz de ejecutar el punto de entrada de JavaScript usando el plugin de ejecución Maven, de la siguiente manera:¿Cómo se usa Maven classpath para ejecutar la clase principal de 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> 

Esto funciona bien, pero el problema es que el experto tarda unos 10 segundos sólo para empezar, que está a punto 10 veces más de lo que mi programa necesita para ejecutarse. ¿Hay una manera de cualquiera:

  1. mejorar el rendimiento del plugin de ejecución Maven de manera que se necesita menos tiempo para iniciar o
  2. exportar la ruta de clases que Maven utilizaría en tiempo de ejecución, por lo que sólo puedo empezar mi programa de un guion?

Respuesta

4
  1. Puede utilizar el interruptor de -o/--offline para contar Maven para no molestar a la comprobación de instantánea o actualizaciones del plugin.

  2. Utilice los complementos appassembler o assembly para generar scripts de inicio que harán referencia automáticamente (en el caso del appassembler) al classpath deseado.

+0

-o no parece afectar el rendimiento de inicio de maven, pero appassembler parece ser exactamente lo que estaba buscando con respecto a la segunda cláusula. – jbeard4

+0

¿hay alguna forma de personalizar la salida del programa appassembler para especificar los argumentos predeterminados para pasar a la clase principal en el script generado? p.ej. path/to/entryPoint.js en la pregunta original. – jbeard4

+0

No lo creo, pero podría escribir [un script de contenedor que invoca el generado] (http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/faq.html#ulimit). Alternativamente, podría empaquetar su propia secuencia de comandos de inicio, dado que (supongo) las rutas/rutas de clase no cambian realmente tan a menudo. –

Cuestiones relacionadas