的maven-EXEC-插件抛出异常,没有明显的原因
我输入一个Windows外壳在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>
因此......重温这个......如果您使用Windows PowerShell,您将得到我最初报告的异常。但是,如果您使用cmd.exe,那么您应该能够使用我发布的命令(带或不带包装双引号)运行该类。
我浪费了一段时间,试图运行Maven原型:在PowerShell的参数中用'.D'参数生成。通过Cygwin通过GitBash使用'bash'可以正常工作,'cmd.exe'也可以。 PowerShell是** The SUCK!** PowerShell试图解析的是''',一旦我在我的机器上得到了一个真正的'bash'外壳,我甚至都没有试图弄清楚如何让PowerShell工作,啊一个可以工作的外壳的温暖模糊! –
我怀疑你可能使用PowerShell。我从来没有用过它,但我并不惊讶这是问题所在。 –
这个答案是关于在PowerShell中的报价http://*.com/a/21913401/2822347 因此,键入(见引用!) 'mvn exec:java“-Dexec.mainClass = com.mypackage.Logger”'may solve问题 –
设置有一些非常基本的脚麻。尝试丢失引号。他们并不需要那里。事实上,尝试先从简单的东西,像
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)
自己输入。不要从其他地方复制/粘贴命令。
我照你说的去做了。即使没有双引号,我也会得到和我一样的异常。另外,如果我输入你的建议,看看我是否可以得到ClassNotFoundException,我宁愿接受与我自己的类相同的异常。有些事情不太正确。我可以发出'mvn clean install'来构建我的项目,而且我没有问题。它必须以maven-exec-plugin的配置为中心。任何其他想法? –
你使用这个Maven安装多久了?你有没有成功运行'exec:java'?如果您仍然拥有Maven zip/tar,请检查针对[下载页面上列出的](http://maven.apache.org/download.html)的校验和。也许只是尝试再次下载和安装Maven。看起来它必须是Maven本身或者操作系统解析命令行参数的问题。你使用普通的旧Windows命令提示符('cmd.exe')吗?如果没有,请从那里尝试。 –
哦,你也可以尝试在'-D'之后添加一个空格,如:'...- D exec.mainClass = ...'。这是一个完全合法的选择,它可能会对发生的事情有所了解。 –
只是一个快速清单:
- 重命名文件夹
~/.m2
并再次运行mvn exec:java ...
,让Maven来从*再次下载的一切。 - 检查您的exec插件是否从*下载。 (请检查您的本地存储库是否包含same files as the central。)
- 寻找可疑
repository
和pluginRepository
标签在pom.xml
(和父母以及)。 - 寻找可疑
repository
,pluginRepository
和mirror
标签在settings.xml
。 - 在其他机器上检查项目 - 将其复制并尝试在另一台机器上构建/运行exec:java。
- 下载Maven 3.x并尝试使用它运行exec。
Maven没有找到exec插件。显示/检查你的'pom.xml'和'settings.xml'。 – palacsint
我可以看到版本1.2.1被下载到我的本地.m2存储库中。如果我手动删除exec-maven-plugin的文件夹并重试,那么在下载并将该插件安装到本地.m2回购库后,我会得到相同的异常。 –
从我的pom.xml的EXEC-Maven的插件,一个片段是... ' org.codehaus.mojo 的exec-Maven的插件 $ {EXEC-Maven的plugin.version } ' 其中版本在''部分设置为1.2.1。 –