无法使用maven打包Web应用程序来复制工件或文件

时间:2014-11-11 10:27:40

标签: java maven vaadin lifecycle

我在打包基于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]

我该怎么办?

4 个答案:

答案 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没有相应的权限将输出文件写入类文件夹。