私はMavenを初めて使用します。プロジェクトをコンパイルするために、mvncompileを押します。ただし、Maven内からプロジェクトを実行する方法がわかりません。たとえば、私がヒットしたとき
mvn exec:java -Dexec.mainClass = "main.java.org.dbalancer.StartProgram"
Mavenの苦情:
java.lang.NoClassDefFoundError: com/sanityinc/jargs/CmdLineParser$OptionException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
at java.lang.Class.getMethod0(Class.java:2685)
at java.lang.Class.getMethod(Class.java:1620)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: com.sanityinc.jargs.CmdLineParser$OptionException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 6 more
これは、jargsライブラリがクラスパスに含まれていないことを意味します。ただし、私のプロジェクトでは、ターゲットフォルダーの下にライブラリが含まれていません。つまり、使用するライブラリは、自分でダウンロードしてクラスパスに含める必要があります(または.m2 /フォルダーを使用します)。たとえば、target / classesフォルダーの下にあり、必要なすべてのライブラリをダウンロードした場合、このコマンドは機能します:java -cp。:../../ lib / jargs-2.0-SNAPSHOT.jar:../.。 /../dom4j-2.0.0-ALPHA-2.jar:../../../log4j-1.2.17.jar main.java.org.dbalancer.StartProgram
しかし、それは少し冗長ではありませんか?どうすればMavenの内部からそれを実行できますか?Javaコマンドを使用して実行できますが、必要なライブラリを自分でダウンロードすることはできませんか?
更新:わかりました、問題は私がそのように含めたライブラリでした:
<dependency>
<groupId>jargs_local</groupId>
<artifactId>jargs</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${basedir}/lib/jargs-2.0-SNAPSHOT.jar</systemPath>
</dependency>
ここで、公式のMavenリポジトリに移動した場所でジャーグします。ただし、mvn execを高速化する方法を知っている人はいますか?何かをチェックしたいだけなら少し遅いです。