maven-exec-plugin没有明显原因抛出异常

Chr*_*son 5 java windows exec-maven-plugin

我在包含带有a的类的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] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的变化

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> 
Run Code Online (Sandbox Code Playgroud)

版本设置在哪里 <properties>

Chr*_*son 16

所以...重新审视这个...如果您使用Windows PowerShell,您将获得我最初报告的异常.但是,如果您使用cmd.exe,那么您应该能够使用我发布的命令运行该类(包含或不包含双引号).

  • 我浪费了一段时间,试图运行Maven原型:在PowerShell的参数中使用`.`生成`-D`参数.通过GitBash通过Cygwin使用`bash`它工作正常,还有`cmd.exe`.PowerShell是**THE SUCK!**这是PowerShell试图解析的`.`,一旦我的机器上有一个真正的`bash` shell,我甚至都没有尝试弄清楚如何使PowerShell工作,一个有效的shell的温暖模糊啊! (3认同)
  • 这个答案是关于powershell中的引用http://stackoverflow.com/a/21913401/2822347因此输入(参见引号!)`mvn exec:java"-Dexec.mainClass = com.mypackage.Logger"`可以解决问题 (3认同)