我在包含带
的类的Maven项目的根目录中的Windows shell中键入以下内容public static void main(String [] args)
我想跑的方法。
mvn exec:java -Dexec.mainClass =“com.spp.config.main.SqlGeneratorHarness”-e
该类存在并在该包中编译 (即target / classes / com / spp / config / main / SqlGeneratorHarness.class)。
我明白了......
+ Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'exec'.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Invalid task '.mainClass=com.spp.config.main.SqlGeneratorHarness': you must specify a valid
lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal
[INFO] ------------------------------------------------------------------------
[INFO] Trace org.apache.maven.BuildFailureException: Invalid task' .mainClass=com.spp.config.main.SqlGeneratorHarness': you must specify
a valid lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.getMojoDescriptor(DefaultLifecycleExecutor.java:1830)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.segmentTaskListByAggregationNeeds(DefaultLifecycleExecutor.java:462)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:175)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
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)
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Tue Sep 27 14:33:52 PDT 2011
[INFO] Final Memory: 3M/122M
[INFO] ------------------------------------------------------------------------
我尝试了像
这样的变体mvn exec:exec -Dexec.executable =“java”[...]
和
mvn org.codehaus.mojo:exec-maven-plugin:1.2.1:java [...]
无济于事。是什么给了什么?
我在Windows 7 Enterprise 64位上运行Maven 2.2.1,Java JDK 1.6.0_27。
我的pom.xml中的exec-maven-plugin片段是......
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec-maven-plugin.version}</version>
</plugin>
版本在<properties>
答案 0 :(得分:16)
所以...重新审视这个......如果您使用Windows PowerShell,您将获得我最初报告的异常。但是,如果您使用cmd.exe,那么您应该能够使用我发布的命令运行该类(包含或不包含双引号)。
答案 1 :(得分:1)
有一些非常基本的错误。尝试丢失引号。那里不需要它们。事实上,尝试从更简单的东西开始,比如
mvn -e exec:java -Dexec.mainClass=foo
这应该给你错误“执行Java类时出现异常.foo”,根本原因应该是ClassNotFoundException:
Caused by: java.lang.ClassNotFoundException: foo
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
自己输入。不要从其他地方复制/粘贴命令。
答案 2 :(得分:0)
快速检查清单:
~/.m2
文件夹并再次运行mvn exec:java ...
,让Maven再次从中央下载所有内容。repository
(以及父母poms)中查找可疑的pluginRepository
和pom.xml
个标签。repository
中查找可疑的pluginRepository
,mirror
和settings.xml
个标签。