Sky's blog

          我和我追逐的夢(mèng)

          導(dǎo)航

          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          留言簿(8)

          隨筆分類

          隨筆檔案

          閱讀排行榜

          評(píng)論排行榜

          常用鏈接

          統(tǒng)計(jì)

          其他鏈接

          友情鏈接

          最新評(píng)論

          解決m2eclipse 0.9.7版本下maven Assembly plugin無(wú)法工作的問(wèn)題

          升級(jí)到m2eclipse 0.9.7版本后,發(fā)現(xiàn)一個(gè)問(wèn)題,maven Assembly plugin無(wú)法工作,具體是在eclipse下執(zhí)行"run as" --> "maven package"時(shí),報(bào)錯(cuò):

          (我在pom.xml中重定義了package的行為,會(huì)執(zhí)行maven-assembly-plugin插件)

          [ERROR] BUILD ERROR
          [INFO] 
          ------------------------------------------------------------------------
          [INFO] Failed to create assembly: Error adding file 
          'net.runafter.nptt:NpttCore:jar:0.1.0' to archive:

          G:\workspace\
          private\tools\nptt\trunk\NpttCore\target\classes isn't a file.


          如果在windows命令行下直接執(zhí)行mvn package,繞過(guò)eclipse和m2eclipse,就可以成功。
          window -> preferences -> maven, 勾選"Debug output" 打開(kāi)maven的debug開(kāi)關(guān),細(xì)看錯(cuò)誤日志:


          [DEBUG] Adding artifact: net.runafter.nptt:NpttCore:jar:
          0.1.0 with file:

          G:\workspace\
          private\tools\nptt\trunk\NpttCore\target\classes to assembly location: lib/NpttCore-0.1.0.jar.
          [DEBUG] Adding file: G:\workspace\
          private\tools\nptt\trunk\NpttCore\target\classes to archive location: NpttMain-

          0.1.0/lib/NpttCore-0.1.0.jar
          [INFO] 
          ------------------------------------------------------------------------
          [ERROR] BUILD ERROR
          [INFO] 
          ------------------------------------------------------------------------
          [INFO] Failed to create assembly: Error adding file 
          'net.runafter.nptt:NpttCore:jar:0.1.0' to archive:

          G:\workspace\
          private\tools\nptt\trunk\NpttCore\target\classes isn't a file.

          [INFO] 
          ------------------------------------------------------------------------
          [DEBUG] Trace
          org.apache.maven.lifecycle.LifecycleExecutionException: Failed to create assembly: Error adding file

          'net.runafter.nptt:NpttCore:jar:0.1.0' to archive: G:\workspace\private\tools\nptt\trunk\NpttCore\target\classes

          isn
          't a file.
              at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:584)
              at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle

          (DefaultLifecycleExecutor.java:
          500)
              at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:
          479)
              at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures

          (DefaultLifecycleExecutor.java:
          331)
              at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments

          (DefaultLifecycleExecutor.java:
          292)
              at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:
          142)
              at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:
          336)
              at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:
          129)
              at org.apache.maven.cli.MavenCli.main(MavenCli.java:
          301)
              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)
          Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to create assembly: Error adding file

          'net.runafter.nptt:NpttCore:jar:0.1.0' to archive: G:\workspace\private\tools\nptt\trunk\NpttCore\target\classes

          isn
          't a file.
              at org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:368)
              at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:
          453)
              at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:
          559)
               
          16 more
          Caused by: org.apache.maven.plugin.assembly.archive.ArchiveCreationException: Error adding file

          'net.runafter.nptt:NpttCore:jar:0.1.0' to archive: G:\workspace\private\tools\nptt\trunk\NpttCore\target\classes

          isn
          't a file.
              at org.apache.maven.plugin.assembly.archive.task.AddArtifactTask.execute(AddArtifactTask.java:193)
              at org.apache.maven.plugin.assembly.archive.task.AddDependencySetsTask.addDependencySet

          (AddDependencySetsTask.java:
          177)
              at org.apache.maven.plugin.assembly.archive.task.AddDependencySetsTask.execute

          (AddDependencySetsTask.java:
          116)
              at org.apache.maven.plugin.assembly.archive.phase.DependencySetAssemblyPhase.execute

          (DependencySetAssemblyPhase.java:
          74)
              at org.apache.maven.plugin.assembly.archive.DefaultAssemblyArchiver.createArchive

          (DefaultAssemblyArchiver.java:
          129)
              at org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:
          322)
               
          18 more
          Caused by: org.codehaus.plexus.archiver.ArchiverException:

          G:\workspace\
          private\tools\nptt\trunk\NpttCore\target\classes isn't a file.
              at org.codehaus.plexus.archiver.AbstractArchiver.addFile(AbstractArchiver.java:308)
              at org.codehaus.plexus.archiver.AbstractArchiver.addFile(AbstractArchiver.java:
          262)
              at org.apache.maven.plugin.assembly.archive.archiver.AssemblyProxyArchiver.addFile

          (AssemblyProxyArchiver.java:
          474)
              at org.apache.maven.plugin.assembly.archive.task.AddArtifactTask.execute(AddArtifactTask.java:
          188)
               
          23 more


              可以看到,maven Assembly plugin試圖以操作文件的方式操作目錄NpttCore\target\classes,因此失敗造成整個(gè)package命令執(zhí)行失敗。

              查了好一段時(shí)間,沒(méi)有結(jié)果,因?yàn)橹耙恢倍际莖k的,而且在命令行下可以正常,有些糊涂。最后沒(méi)有辦法了,只好google,終于有所收獲,同樣的問(wèn)題之前有人遇到過(guò):

              http://jira.codehaus.org/browse/MNGECLIPSE-1201

              而且給maven的官方提過(guò)comments:
              http://jira.codehaus.org/browse/MASSEMBLY-396

              似乎maven的維護(hù)人員給出了答案:

              This is related to workspace resolution feature that is enabled automatically if project has workspace resolution enabled. You can disable it in the Maven launch configuration.

              The workspace resolution is not a new feature, you can read about it at [1]. In 0.9.7 defaults for the Maven launch configuration been changed to pickup setting for workspace dependency resolution from the project settings, so defaults for compile-time dependency resolution match Maven launch dependency resolution. Unfortunately not all Maven plugins can properly work when workspace dependency resolution is enabled, so I would recommend to submit bug reports to the Maven projects for such plugins.

              The m2eclipse allows to disable workspace resolution for compile time and for Maven launch config separately, so you have some flexibility.

              簡(jiǎn)單的說(shuō)就是和workspace resolution這個(gè)特性有關(guān),In 0.9.7默認(rèn)的maven的啟動(dòng)配置已經(jīng)被修改為“pickup setting for workspace dependency resolution from the project settings”,而不是所有的maven插件都可以在workspace dependency resolution開(kāi)啟的情況下工作。比如這次maven Assembly plugin就犯錯(cuò)了,可以通過(guò)在maven的啟動(dòng)配置中關(guān)閉這個(gè)特性來(lái)解決這個(gè)問(wèn)題。

              解決的方法很簡(jiǎn)單,右鍵單擊要執(zhí)行package的project,"properties for ***" -> maven,將"resolve dependencies from workspace projects"前的勾取消。

              重新執(zhí)行maven package成功,問(wèn)題解決。

          posted on 2009-03-17 21:41 sky ao 閱讀(4404) 評(píng)論(0)  編輯  收藏 所屬分類: project building

          主站蜘蛛池模板: 眉山市| 新宁县| 广昌县| 翁源县| 登封市| 涞源县| 大兴区| 东阿县| 金华市| 翁牛特旗| 金塔县| 舞钢市| 陆川县| 华坪县| 三原县| 廉江市| 天门市| 叙永县| 红原县| 峨眉山市| 修文县| 平湖市| 玛纳斯县| 新龙县| 桐城市| 达日县| 焦作市| 铁岭县| 神农架林区| 诸暨市| 剑川县| 平阳县| 泾川县| 外汇| 南乐县| 马山县| 揭阳市| 太白县| 布尔津县| 靖江市| 宜昌市|