2

Je crée une application maven qui utilise un service de point de terminaison sparql. Je voudrais avoir un objectif maven pour télécharger le point de terminaison sparql et démarrer le service mais il semble que maven ait quelques problèmes pour configurer le classpath. J'utilise blazegraph et son artefact au https://mvnrepository.com/artifact/com.blazegraph/bigdata-jar.Maven exec: java exécute le plug-in jar dépendance du plugin exécutable dans NPE

Ici, il est mon plug-in configuration pom.xml:

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.6.0</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>java</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <mainClass>com.bigdata.rdf.sail.webapp.StandaloneNanoSparqlServer</mainClass> 
       <includePluginDependencies>true</includePluginDependencies> 
       <includeProjectDependencies>false</includeProjectDependencies> 
       <executableDependency> 
        <groupId>com.blazegraph</groupId> 
        <artifactId>blazegraph-jar</artifactId> 
       </executableDependency> 
       <addOutputToClasspath>false</addOutputToClasspath> 
      </configuration> 
      <dependencies> 
       <!-- https://mvnrepository.com/artifact/com.blazegraph/blazegraph-jar --> 
       <dependency> 
        <groupId>com.blazegraph</groupId> 
        <artifactId>blazegraph-jar</artifactId> 
        <version>2.1.4</version> 
        <scope>runtime</scope> 
        <type>jar</type> 
       </dependency> 
      </dependencies> 
     </plugin> 

La sortie de débogage insinue que le plug-in ne peut pas trouver l'artefact:

Caused by: java.lang.NullPointerException 
at org.codehaus.mojo.exec.AbstractExecMojo.findExecutableArtifact(AbstractExecMojo.java:278) 
at org.codehaus.mojo.exec.ExecJavaMojo.determineRelevantPluginDependencies(ExecJavaMojo.java:650) 
at org.codehaus.mojo.exec.ExecJavaMojo.addRelevantPluginDependenciesToClasspath(ExecJavaMojo.java:568) 
at org.codehaus.mojo.exec.ExecJavaMojo.getClassLoader(ExecJavaMojo.java:520) 
at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:301) 
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
... 27 more 

Qu'est-ce que je suis disparu?

Modifier 1 Cette question n'est pas un double de What is a NullPointerException, and how do I fix it? parce que l'exception est levée par Maven car il ne peut pas trouver l'artefact droit dans la liste des dépendances (mais il y a lieu).

Éditer 2 Merci à @Sean Patrick Floyd J'ai partiellement résolu le problème. Il y a toujours le même problème dans la configuration du classpath, je suppose. Maintenant, Maven trouve la classe principale et le pot, mais après l'exécution, je reçois un autre NPE dans le code compilé. En regardant dans le code open source de blazegraph, il semble qu'il ne peut pas ouvrir une ressource dans le fichier exécutable.

Voici la ligne qui provoque NPE:

System.setProperty("jetty.home", 
      jettyXml.getClass().getResource("/war").toExternalForm()); 

https://github.com/blazegraph/database/blob/master/bigdata-jar/src/main/java/com/bigdata/rdf/sail/webapp/StandaloneNanoSparqlServer.java#L142

+1

double possible de [? Qu'est-ce qu'un NullPointerException, et comment puis-je résoudre ce problème] (https://stackoverflow.com/questions/218384/what-is- a-nullpointerexception-and-how-do-i-fix-it) –

+0

NPE est lancé par un plugin Maven, pas par le code OP. – LoganMzz

Répondre

5

Le mécanisme <executableDependency> est utilisé pour les binaires, et non pour JARs, see the usage page. Retirez cette partie, ces paramètres doivent être suffisants:

<mainClass>com.bigdata.rdf.sail.webapp.StandaloneNanoSparqlServer</mainClass> 
<includePluginDependencies>true</includePluginDependencies> 
+0

Il est également supposé fonctionner avec l'objectif 'java': http://www.mojohaus.org/exec-maven-plugin/examples/example-exec-using-plugin-dependencies.html – LoganMzz

+0

@LoganMzz peut-être. mais cela peut aussi être un petit problème du système de documentation des paramètres maven. de toute façon, cela devrait fonctionner sans cela. –

+0

Merci qui résout partiellement le problème. Je suis en train de mettre à jour la question avec de nouvelles informations. – Cristiano