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

Mar*_*öll 8 java lifecycle vaadin maven

我在打包基于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]
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

Jan*_*net 21

之前我有相同的错误消息.在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>
Run Code Online (Sandbox Code Playgroud)


p3c*_*ing 6

这与安全无关:在 Windows 下,当进程未正确“关闭”其对文件夹的使用时,就会出现此问题。我们遇到了 apt-maven-plugin 的问题:在一个复杂的多模块项目中,当一个使用这个插件的模块后来在一个 über jar 构建 pom 中被引用时,我们在构建 über 的过程中遇到了这个错误使用 apt-maven-plugin 在模块的 target/classes 文件夹中创建 jar。恢复构建时(mvn params -rf :offending_module),问题消失,因为启动apt-maven-plugin的Maven进程已经死亡,文件夹的锁被释放。

至少可以说很烦人。


vud*_*goc 2

这似乎与安全性有关,因为日志显示“(访问被拒绝)”。也许项目 B 的输出 jar 存在,并且有一些进程仍在读取它,因此您无法覆盖输出文件。或者maven没有适当的权限将输出文件写入类文件夹。