2011-06-07 7 views
6

Actuellement, j'utilise Maven pour créer mon projet JavaScript Rhino, télécharger des bibliothèques dépendantes et gérer le classpath lors de l'exécution. Je suis en mesure d'exécuter le point d'entrée JavaScript en utilisant le plugin exec Maven, de la manière suivante:Comment utiliser Maven classpath pour exécuter la classe principale 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> 

Cela fonctionne bien, mais le problème est que maven prend environ 10 secondes juste pour commencer, qui est d'environ 10 fois plus long que mon programme. Est-il possible soit:

  1. améliorer les performances du plugin exec Maven pour qu'il prenne moins de temps pour démarrer ou
  2. exporter le classpath que Maven utiliser lors de l'exécution, de sorte que je peux commencer mon programme d'un script?

Répondre

4
  1. Vous pouvez utiliser le commutateur -o/--offline dire Maven de ne pas la peine de vérifier les mises à jour pour les instantanés ou plug-in. Utilisez les plugins appassembler ou assembly pour générer des scripts de démarrage qui vont automatiquement (dans le cas de l'appassembleur) référencer le chemin de classe souhaité.

+0

-o ne semble pas affecter les performances de démarrage de maven, mais appassembler semble être exactement ce que je recherchais par rapport à la deuxième clause. – jbeard4

+0

est-il un moyen de personnaliser la sortie du programme appassembler pour spécifier les arguments par défaut pour passer à la classe principale dans le script généré? par exemple. chemin/vers/entryPoint.js dans la question d'origine. – jbeard4

+0

Je ne le crois pas, mais vous pourriez écrire [un script wrapper qui appelle le script généré] (http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/faq.html#ulimit). Alternativement, vous pourriez juste emballer votre propre script de démarrage, étant donné que (je suppose) les classes/dépendances ne changent pas vraiment souvent. –

Questions connexes