2009-09-23 3 views
3

Est-ce que quelqu'un sait s'il est possible d'exécuter mvn exec: java sur mvn aggregate POM?mvn exec: java sur agrégat pom

Actuellement, je reçois:

2009-09-24 02:24:14.404 :bash: [email protected] : ~/adfadf/programming/verknowsys/codadris/ide_projects $ mvn exec:java -e -Dexec.mainClass=codadris.coviob2.App_Coviob2 
+ Error stacktraces are turned on. 
[INFO] Scanning for projects... 
[INFO] Reactor build order: 
[INFO] net.jcip.annotations 
[INFO] codadris.utils 
[INFO] codadris.binblocklang 
[INFO] jargs 
[INFO] codadris.dbapp 
[INFO] codadris.dbgui.scala 
[INFO] flexdock_codadris 
[INFO] codadris.gui.utils 
[INFO] codadris.gui 
[INFO] codadris.gui.treetable 
[INFO] codadris.gui.textedit 
[INFO] codadris.gui.screenspace 
[INFO] codadris.gui.suite 
[INFO] codadris.dbgui 
[INFO] All Codadris modules aggregate POM 
[INFO] Searching repository for plugin with prefix: 'exec'. 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building net.jcip.annotations 
[INFO] task-segment: [exec:java] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Preparing exec:java 
[INFO] No goals needed for project - skipping 
[INFO] [exec:java] 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] An exception occured while executing the Java class. codadris.coviob2.App_Coviob2 

[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
org.apache.maven.lifecycle.LifecycleExecutionException: An exception occured while executing the Java class. codadris.coviob2.App_Coviob2 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:583) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:512) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:482) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:287) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
     at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
     at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
     at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
Caused by: org.apache.maven.plugin.MojoExecutionException: An exception occured while executing the Java class. codadris.coviob2.App_Coviob2 
     at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:345) 
     at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558) 
     ... 16 more 
Caused by: java.lang.ClassNotFoundException: codadris.coviob2.App_Coviob2 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
     at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283) 
     at java.lang.Thread.run(Thread.java:619) 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1 second 
[INFO] Finished at: Thu Sep 24 02:24:17 CEST 2009 
[INFO] Final Memory: 4M/94M 
[INFO] ------------------------------------------------------------------------ 
2009-09-24 02:24:17.917 :bash: [email protected] : ~/adfadf/programming/verknowsys/codadris/ide_projects $ 

Le POM:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>codadris</groupId> 
    <artifactId>codadris</artifactId> 
    <packaging>pom</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>All Codadris modules aggregate POM</name> 
    <url>http://maven.apache.org</url> 
    <modules> 
     <module>codadris.binblocklang</module> 
     <module>codadris.dbapp</module> 
     <module>codadris.dbgui</module> 
     <!-- <module>codadris.dbgui.scala</module> --> 
     <module>codadris.gui</module> 
     <!--<module>codadris.gui.scala</module>--> 
     <module>codadris.gui.screenspace</module> 
     <module>codadris.gui.suite</module> 
     <module>codadris.gui.textedit</module> 
     <module>codadris.gui.treetable</module> 
     <module>codadris.gui.utils</module> 
     <module>codadris.utils</module> 
<!--  <module>ekit_codadris</module>--> 
     <module>flexdock_codadris</module> 
     <module>jargs</module> 
     <module>net.jcip.annotations</module> 
     <module>codadris.dbgui.scala</module> 
    </modules> 

    <!-- 2009-08-27 06:04:10 ; karolrvn ; http://stackoverflow.com/questions/1274523/maven-surefire-reporting-plugin-configuration --> 
    <reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-report-plugin</artifactId> 
<!--    <version>2.4.2</version> --> 
       <configuration> 
        <aggregate>true</aggregate> 
        <!--also set this to link to generated source reports--> 
        <linkXRef>true</linkXRef> 
       </configuration> 
      </plugin> 
     </plugins> 
    </reporting> 


</project> 

la classe, que je veux exécuter (codadris.coviob2.App_Coviob2) est dans le module codadris.dbgui

Des idées?
TIA
Désolé pour le formatage probablement pas trop correct. J'ai eu un problème avec les nouvelles lignes.

Répondre

5

Selon le Exec Maven Plugin Documentation au sujet exec:java.

Exécute la classe java fournie dans la machine virtuelle en cours avec les dépendances du projet englobant comme chemin de classe.

Ici, la pom agrégation vous montrez ne contient aucune dépendance au module codadris.dbgui (qui est en fait une bonne chose, ne l'ajoutez pas!), D'où le java.lang.ClassNotFoundException.

Pour éviter cela java.lang.ClassNotFoundException, une première option serait d'exécuter l'objectif exec:java à partir du module contenant la classe Java comme indiqué dans une autre réponse. Mais ce n'est pas ce que vous demandez.

Heureusement, il y a une autre option - Plugin à l'aide des dépendances - qui est documenté dans Using Plugin Dependencies Instead of Project Dependencies:

il est souhaitable Parfois d'exécuter une classe Java sans affecter les dépendances de votre projet. Par exemple, si vous utilisez les plugins Maven csharp, l'ajout de dépendances Java à votre projet va perturber le compilateur csharp. Par conséquent le plugin Exec Maven vous permet de spécifier les dépendances de votre classe exécutable en tant que dépendances de plugins. Étant donné que Maven prend en compte les dépendances de plugins lors de la détermination de l'ordre de construction pour un projet multi-module, votre ordre de construction doit automatiquement être ajusté correctement (je pense).

[...]

Cela devrait à l'affaire. Reportez-vous au lien donné ci-dessus pour plus de détails sur la configuration exec-maven-plugin et Exemple de configuration POM utilisant les dépendances de plugins.PS: Je suis un peu confus ici car exec:java se plaint de ne pas être en mesure de trouver un pom.xml ("Cannot execute mojo: java. It requires a project with an existing pom.xml, but the build is not using one."). Peut-être que c'est juste la trace qui n'est pas exacte mais cela me fait douter de l'emplacement du pom parent. PPS: Le PS ne s'applique plus, l'OP a mis à jour la question avec la bonne trace.

+0

Je suis désolé, j'ai collé le mauvais vidage de la console, qui était le résultat d'une exécution dans le mauvais répertoire. La vraie erreur est java.lang.ClassNotFoundException: codadris.coviob2.App_Coviob2 – KarolDepka

+0

Ok, cela semble plus précis et logique. –

+0

+1 Je pense que cela va résoudre le problème –

1

Je vous recommande cd jusqu'au module où la classe en question réside et exécute exec:java là. Le exec:javadocumentation dit «Exécute la classe java fournie dans la machine virtuelle actuelle avec les dépendances du projet englobant comme classpath.», Donc même si vous n'aviez pas l'erreur que vous avez listée ci-dessus, elle échouerait car elle excuberait avec le parent les dépendances de POM (il n'y en a pas) plutôt que celles de l'enfant. La trace de la pile d'erreur est un peu étrange, mais qui est souvent typique (malheureusement) lorsqu'un plug-in est utilisé d'une manière qu'il ne soit pas conçu pour fonctionner dans

Questions connexes