簡體   English   中英

maven-exec-plugin沒有明顯原因拋出異常

[英]maven-exec-plugin throws exception for no apparent reason

我在包含帶有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] ------------------------------------------------------------------------

我嘗試過類似的變化

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>設置版本的位置

所以...重新審視這個...如果您使用Windows PowerShell,您將獲得我最初報告的異常。 但是,如果您使用cmd.exe,那么您應該能夠使用我發布的命令運行該類(包含或不包含雙引號)。

有一些非常基本的錯誤。 嘗試丟失引號。 那里不需要它們。 事實上,嘗試從更簡單的東西開始,比如

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)

自己輸入。 不要從其他地方復制/粘貼命令。

只是一個快速清單:

  1. 重命名~/.m2文件夾並再次運行mvn exec:java ...讓Maven再次從中心下載所有內容。
  2. 檢查您的exec插件是否從中央下載。 (檢查您的本地存儲庫是否包含與中心相同的文件 。)
  3. pom.xml (以及父poms)中查找可疑的repositorypluginRepository標記。
  4. settings.xml查找可疑repositorypluginRepositorymirror標記。
  5. 在另一台機器上檢查項目 - 復制它並嘗試在另一台機器上構建/運行exec:java。
  6. 下載Maven 3.x並嘗試使用它運行exec。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM