2011-09-27 50 views
4

我输入一个Wi​​ndows外壳在Maven项目的根目录下包含有的maven-EXEC-插件抛出异常,没有明显的原因

公共静态无效的主要(字串[] args类以下)

我想运行的方法。

MVN EXEC:JAVA -Dexec.mainClass = “com.spp.config.main.SqlGeneratorHarness” -e

类存在,并且在该包被编译 (即,目标/类/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 -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> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>${exec-maven-plugin.version}</version> 
</plugin> 

在所述版本在<properties>

+0

Maven没有找到exec插件。显示/检查你的'pom.xml'和'settings.xml'。 – palacsint

+0

我可以看到版本1.2.1被下载到我的本地.m2存储库中。如果我手动删除exec-maven-plugin的文件夹并重试,那么在下载并将该插件安装到本地.m2回购库后,我会得到相同的异常。 –

+0

从我的pom.xml的EXEC-Maven的插件,一个片段是... ' org.codehaus.mojo 的exec-Maven的插件 $ {EXEC-Maven的plugin.version } ' 其中版本在''部分设置为1.2.1。 –

回答

15

因此......重温这个......如果您使用Windows PowerShell,您将得到我最初报告的异常。但是,如果您使用cmd.exe,那么您应该能够使用我发布的命令(带或不带包装双引号)运行该类。

+2

我浪费了一段时间,试图运行Maven原型:在PowerShell的参数中用'.D'参数生成。通过Cygwin通过GitBash使用'bash'可以正常工作,'cmd.exe'也可以。 PowerShell是** The SUCK!** PowerShell试图解析的是''',一旦我在我的机器上得到了一个真正的'bash'外壳,我甚至都没有试图弄清楚如何让PowerShell工作,啊一个可以工作的外壳的温暖模糊! –

+0

我怀疑你可能使用PowerShell。我从来没有用过它,但我并不惊讶这是问题所在。 –

+3

这个答案是关于在PowerShell中的报价http://stackoverflow.com/a/21913401/2822347 因此,键入(见引用!) 'mvn exec:java“-Dexec.mainClass = com.mypackage.Logger”'may solve问题 –

0

设置有一些非常基本的脚麻。尝试丢失引号。他们并不需要那里。事实上,尝试先从简单的东西,像

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) 

自己输入。不要从其他地方复制/粘贴命令。

+0

我照你说的去做了。即使没有双引号,我也会得到和我一样的异常。另外,如果我输入你的建议,看看我是否可以得到ClassNotFoundException,我宁愿接受与我自己的类相同的异常。有些事情不太正确。我可以发出'mvn clean install'来构建我的项目,而且我没有问题。它必须以maven-exec-plugin的配置为中心。任何其他想法? –

+0

你使用这个Maven安装多久了?你有没有成功运行'exec:java'?如果您仍然拥有Maven zip/tar,请检查针对[下载页面上列出的](http://maven.apache.org/download.html)的校验和。也许只是尝试再次下载和安装Maven。看起来它必须是Maven本身或者操作系统解析命令行参数的问题。你使用普通的旧Windows命令提示符('cmd.exe')吗?如果没有,请从那里尝试。 –

+0

哦,你也可以尝试在'-D'之后添加一个空格,如:'...- D exec.mainClass = ...'。这是一个完全合法的选择,它可能会对发生的事情有所了解。 –

0

只是一个快速清单:

  1. 重命名文件夹~/.m2并再次运行mvn exec:java ...,让Maven来从中央再次下载的一切。
  2. 检查您的exec插件是否从中央下载。 (请检查您的本地存储库是否包含same files as the central。)
  3. 寻找可疑repositorypluginRepository标签在pom.xml(和父母以及)。
  4. 寻找可疑repositorypluginRepositorymirror标签在settings.xml
  5. 在其他机器上检查项目 - 将其复制并尝试在另一台机器上构建/运行exec:java。
  6. 下载Maven 3.x并尝试使用它运行exec。
相关问题