我在打包基于vaadin的Web应用程序时遇到问题。我的工作区中有两个项目,名为项目A和项目B.项目A引用B,通过将项目添加到类路径,正确地在工作区和degub模式下解析依赖项。
现在,如果我尝试使用maven包,我总是会收到错误
Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project A: Failed to copy file for artifact [com.dscsag.dscxps:ProjectB:jar:0.0.1-SNAPSHOT:compile]: C:\some_path\target\classes (Access is denied) -> [Help 1]
我该怎么办?
答案 0 :(得分:20)
我之前有过相同的错误消息。在pom.xml中,我将maven-war-plugin版本从2.3更改为2.6,然后项目成功构建。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
</plugin>
答案 1 :(得分:3)
这与安全性无关:在Windows下,当进程未正确“关闭”其文件夹使用时,会出现此问题。 我们遇到了apt-maven-plugin的问题:在一个复杂的多模块项目中,当一个使用这个插件的模块稍后在一个构建pom的jar架子中被引用时,我们在构建这个插件时遇到了这个错误使用apt-maven-plugin在模块的target / classes文件夹上创建jar。 当恢复构建时(mvn params -rf:offending_module),问题消失,因为启动apt-maven-plugin的Maven进程已经死亡,因此文件夹的锁定被释放。
至少可以说很烦人。
答案 2 :(得分:0)
根据我的经验,在进行复制的Maven插件(对我来说是artifact maven-resources-plugin)中,出现了 outputDirectory 元素,因为我的输出目录只是一个斜线。我认为这导致Maven尝试将其复制到C:/,并且我需要管理员权限才能将文件放置在C:/中。将outputDirectory更改为$ {basedir} / target / resources可以解决此错误。
答案 3 :(得分:-1)
它似乎与安全性有关,因为日志表示&#34;(访问被拒绝)&#34;。也许项目B的输出jar存在,并且仍然有一些进程从中读取,因此您无法覆盖输出文件。或者maven没有相应的权限将输出文件写入类文件夹。