当打开其中一个解析项目时,Eclipse 中的解析工作区工件选项会生成错误
Resolve workspace artifacts option in Eclipse generates error when one of the resolving projects is opened
我有一个 Maven 项目 A,有 4 个子模块。我有另一个 Maven 项目 B,没有任何子模块。 A的4个子模块之一,引用项目B.
当我对项目 A 进行全新安装时,我收到一条错误消息:
[错误] 无法在项目 dca-web 上执行目标 org.apache.maven.plugins:maven-war-plugin:2.2:war(默认-war):无法为工件 [be.vlaanderen.dwse:dwse-doc-tools:jar:3.2.2:compile] 复制文件:/Users/Fabrizio/ontwikkeling/projecten/doc-tools/target/classes(是一个目录)
启用调试信息时:很清楚是什么问题:
[错误] 无法在项目 dca-web 上执行目标 org.apache.maven.plugins:maven-war-plugin:2.2:war(默认-war):无法为工件 [be.vlaanderen.dwse:dwse-doc-tools:jar:3.2.2:compile] 复制文件:/Users/Fabrizio/ontwikkeling/projecten/doc-tools/target/classes(是一个目录)-> [帮助 1]
org.apache.maven.lifecycle.LifecycleExecutionException: 无法在项目 dca-web 上执行目标 org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war): 失败复制工件 [be.vlaanderen.dwse:dwse-doc-tools:jar:3.2.2:compile] 的文件
在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
在 org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:483)
在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
原因:org.apache.maven.plugin.MojoExecutionException:无法为工件复制文件 [be.vlaanderen.dwse:dwse-doc-tools:jar:3.2.2:compile]
在 org.apache.maven.plugin.war.packaging.ArtifactsPackagingTask.performPackaging(ArtifactsPackagingTask.java:131)
在 org.apache.maven.plugin.war.packaging.WarProjectPackagingTask.handleArtifacts(WarProjectPackagingTask.java:190)
在 org.apache.maven.plugin.war.packaging.WarProjectPackagingTask.performPackaging(WarProjectPackagingTask.java:109)
在 org.apache.maven.plugin.war.AbstractWarMojo.buildWebapp(AbstractWarMojo.java:472)
在 org.apache.maven.plugin.war.AbstractWarMojo.buildExplodedWebapp(AbstractWarMojo.java:404)
在 org.apache.maven.plugin.war.WarMojo.performPackaging(WarMojo.java:215)
在 org.apache.maven.plugin.war.WarMojo.execute(WarMojo.java:177)
在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 还有 19 个
原因:java.io.FileNotFoundException:/Users/Fabrizio/ontwikkeling/projecten/doc-tools/target/classes(是一个目录)
在 java.io.FileInputStream.open(本机方法)
在 java.io.FileInputStream.(FileInputStream.java:138)
在 org.codehaus.plexus.util.io.FileInputStreamFacade.getInputStream(FileInputStreamFacade.java:36)
在 org.codehaus.plexus.util.FileUtils.copyStreamToFile(FileUtils.java:1141)
在 org.codehaus.plexus.util.FileUtils.copyFile(FileUtils.java:1048)
在 org.apache.maven.plugin.war.packaging.AbstractWarPackagingTask.copyFile(AbstractWarPackagingTask.java:293)
在 org.apache.maven.plugin.war.packaging.AbstractWarPackagingTask$1.registered(AbstractWarPackagingTask.java:150)
在 org.apache.maven.plugin.war.util.WebappStructure.registerFile(WebappStructure.java:211)
在 org.apache.maven.plugin.war.packaging.AbstractWarPackagingTask.copyFile(AbstractWarPackagingTask.java:145)
在 org.apache.maven.plugin.war.packaging.ArtifactsPackagingTask.performPackaging(ArtifactsPackagingTask.java:106)
但是文件夹target/classes是一个目录!所以我猜其中一个 Maven 插件中某处存在错误...
当我关闭项目B时,没有问题。所以打开引用的项目会产生问题...
我需要打开项目 B,因为我在 Tomcat 中使用项目 A 作为 Web 应用程序。当我打开项目 B 并更改文件并保存它时,Eclipse 会进行增量发布,因此 Tomcat 不需要重新部署或重新启动!这为我节省了 30 秒的每次文件更改时间!所以保持这个项目的开放是非常重要的...
我找到了解决方案。显然,eclipse luna(或任何基于 ide 的 eclipse luna)正在使用嵌入式版本的 maven,而后者又使用 maven-war-plugin 版本 2.2。在我的pom中添加2.6版本后,它解决了这个问题!
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</build>
我有一个 Maven 项目 A,有 4 个子模块。我有另一个 Maven 项目 B,没有任何子模块。 A的4个子模块之一,引用项目B.
当我对项目 A 进行全新安装时,我收到一条错误消息:
[错误] 无法在项目 dca-web 上执行目标 org.apache.maven.plugins:maven-war-plugin:2.2:war(默认-war):无法为工件 [be.vlaanderen.dwse:dwse-doc-tools:jar:3.2.2:compile] 复制文件:/Users/Fabrizio/ontwikkeling/projecten/doc-tools/target/classes(是一个目录)
启用调试信息时:很清楚是什么问题:
[错误] 无法在项目 dca-web 上执行目标 org.apache.maven.plugins:maven-war-plugin:2.2:war(默认-war):无法为工件 [be.vlaanderen.dwse:dwse-doc-tools:jar:3.2.2:compile] 复制文件:/Users/Fabrizio/ontwikkeling/projecten/doc-tools/target/classes(是一个目录)-> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException: 无法在项目 dca-web 上执行目标 org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war): 失败复制工件 [be.vlaanderen.dwse:dwse-doc-tools:jar:3.2.2:compile] 的文件 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155) 在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:160) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
原因:org.apache.maven.plugin.MojoExecutionException:无法为工件复制文件 [be.vlaanderen.dwse:dwse-doc-tools:jar:3.2.2:compile] 在 org.apache.maven.plugin.war.packaging.ArtifactsPackagingTask.performPackaging(ArtifactsPackagingTask.java:131) 在 org.apache.maven.plugin.war.packaging.WarProjectPackagingTask.handleArtifacts(WarProjectPackagingTask.java:190) 在 org.apache.maven.plugin.war.packaging.WarProjectPackagingTask.performPackaging(WarProjectPackagingTask.java:109) 在 org.apache.maven.plugin.war.AbstractWarMojo.buildWebapp(AbstractWarMojo.java:472) 在 org.apache.maven.plugin.war.AbstractWarMojo.buildExplodedWebapp(AbstractWarMojo.java:404) 在 org.apache.maven.plugin.war.WarMojo.performPackaging(WarMojo.java:215) 在 org.apache.maven.plugin.war.WarMojo.execute(WarMojo.java:177) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 还有 19 个
原因:java.io.FileNotFoundException:/Users/Fabrizio/ontwikkeling/projecten/doc-tools/target/classes(是一个目录) 在 java.io.FileInputStream.open(本机方法) 在 java.io.FileInputStream.(FileInputStream.java:138) 在 org.codehaus.plexus.util.io.FileInputStreamFacade.getInputStream(FileInputStreamFacade.java:36) 在 org.codehaus.plexus.util.FileUtils.copyStreamToFile(FileUtils.java:1141) 在 org.codehaus.plexus.util.FileUtils.copyFile(FileUtils.java:1048) 在 org.apache.maven.plugin.war.packaging.AbstractWarPackagingTask.copyFile(AbstractWarPackagingTask.java:293) 在 org.apache.maven.plugin.war.packaging.AbstractWarPackagingTask$1.registered(AbstractWarPackagingTask.java:150) 在 org.apache.maven.plugin.war.util.WebappStructure.registerFile(WebappStructure.java:211) 在 org.apache.maven.plugin.war.packaging.AbstractWarPackagingTask.copyFile(AbstractWarPackagingTask.java:145) 在 org.apache.maven.plugin.war.packaging.ArtifactsPackagingTask.performPackaging(ArtifactsPackagingTask.java:106)
但是文件夹target/classes是一个目录!所以我猜其中一个 Maven 插件中某处存在错误...
当我关闭项目B时,没有问题。所以打开引用的项目会产生问题...
我需要打开项目 B,因为我在 Tomcat 中使用项目 A 作为 Web 应用程序。当我打开项目 B 并更改文件并保存它时,Eclipse 会进行增量发布,因此 Tomcat 不需要重新部署或重新启动!这为我节省了 30 秒的每次文件更改时间!所以保持这个项目的开放是非常重要的...
我找到了解决方案。显然,eclipse luna(或任何基于 ide 的 eclipse luna)正在使用嵌入式版本的 maven,而后者又使用 maven-war-plugin 版本 2.2。在我的pom中添加2.6版本后,它解决了这个问题!
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</build>