Comment définir le classpath pour mvn exec exec?
J'essaie d'avoir mvn exec:exec
(ou mvn exec:java
) exécuter mon programme avec un jar dans le classpath. Cependant, le pot ne parvient pas à charger:
Exception in thread "main" java.lang.Error: Unable to load voice directory. java.lang.ClassNotFoundException: com.sun.speech.freetts.en.us.cmu_us_slt_arctic.ArcticVoiceDirectory
at com.sun.speech.freetts.VoiceManager.getVoiceDirectories(VoiceManager.java:211)
at com.sun.speech.freetts.VoiceManager.getVoices(VoiceManager.java:111)
at com.sun.speech.freetts.VoiceManager.getVoice(VoiceManager.java:521)
at xpress.audio.TTS.<init>(TTS.java:66)
at xpress.audio.TTS.<init>(TTS.java:62)
at xpress.audio.AudioProducer.main(AudioProducer.java:18)
L'exécution du programme directement à partir de la CLI à l'aide de java
travaux:
C:\XpressAudio\target\classes>java -cp "C:\XpressAudio\target\XpressAudio-1.0-SN
APSHOT-jar-with-dependencies.jar;C:\XpressAudio\cmu_us_slt_arctic.jar;C:\XpressA
udio\en_us.jar;C:\XpressAudio\*" xpress.audio.AudioProducer
Voici la <build>
partie de mon pom.xml
:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<mainClass>xpress.audio.AudioProducer</mainClass>
</configuration>
<dependencies>
<dependency>
<groupId>cmu_us</groupId>
<artifactId>slt_arctic</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/cmu_us_slt_arctic.jar</systemPath>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Quelqu'un pourrait-il me dire comment dois-je modifier le pom.xml
tels que mvn exec:exec
fonctionne comme le java
de commande ci-dessus?
com.sun.speech.freetts.en.us.cmu_us_slt_arctic.ArcticVoiceDirectory
est une classe de cmu_us_slt_arctic.jar
double possible de Maven plugin exec - comment inclure "système" classpath?
Vous devriez probablement utiliser le java mojo au lieu de l'exec mojo, et de voir les options qui y sont énumérés: mojo.codehaus.org/exec-maven-plugin/java-mojo.html. Surtout executableDependency, includePluginDependencies et includeProjectDependencies, je suppose.
Vous devriez probablement utiliser le java mojo au lieu de l'exec mojo, et de voir les options qui y sont énumérés: mojo.codehaus.org/exec-maven-plugin/java-mojo.html. Surtout executableDependency, includePluginDependencies et includeProjectDependencies, je suppose.
OriginalL'auteur simpatico | 2013-09-28
Vous devez vous connecter pour publier un commentaire.
Dans maven, il est possible d'inclure un local jar (qui est en dehors de repository maven) à l'aide de systemPath. Mais étant donné que la portée du système (pour les dépendances déclarées avec systemPath), il y a peu de limites et de ce fait, il ne fonctionne qu'avec exec:java.
Pour exec exec, la solution ci-dessus ne fonctionnera pas parce que maven ne comprend pas le système de l'étendue des dépendances dans ses produits (à l'exécution) classpath (%classpath) donc la solution est d'utiliser votre propre chemin de classe au lieu de maven généré classpath comme indiqué ci-dessous.
Remplacer local.jar avec tous les fichiers jar sont tenus d'être présents à un certain endroit fixe (ici racine du projet est assumée, où pox.xml est situé). Notez également l'utilisation de "project-jar-with-dependencies.jar" dans votre cas, il devrait être la cible\XpressAudio-1.0-SN
APSHOT-jar-with-dependencies.jar.
<plugin>...</plugin>
bloc de mettre en? J'ai essayé de l'ajouter à<build><plugins>...
pour ajouter un répertoire/etc/hbase/conf
au classpath, mais il ne semble pas avoir d'effet.Si vous voulez une dépendance ET un chemin d'accès local dans exec exec, est-ce possible?
OriginalL'auteur subhasish
standard de java ne nous permettent pas de spécifier plusieurs
-cp
arguments, maisexec-maven-plugin
ne,note de l'appel à
java.pl
ci-dessus, c'est le truccomprendre ce
java.pl
ne et de l'utiliser ou de faire l'équivalent en bash, cmd, powershell, que ce soit..OriginalL'auteur alexgirao
Pour définir d'autres classpath dans maven vous devez utiliser dans votre maven fichier de configuration comme ci-dessous:
Pour plus de détails:
http://maven.apache.org/surefire/maven-surefire-plugin/examples/configuring-classpath.html
Bien que cette réponse liens vers maven-surefire-plugin, il montre un bon exemple de la façon de prolonger le chemin de la classe. exec-maven-plugin prend en charge, mais ne fournissent pas un exemple, voir mojohaus.org/exec-maven-plugin/...
OriginalL'auteur Pramod Kumar