Maven编译访问被拒绝的复制依赖项

时间:2019-09-20 16:45:25

标签: windows maven

我以前从未遇到过Maven怪异的问题。我似乎是团队中唯一遇到问题的人,这是针对一个已经存在相当长一段时间(超过10年)的项目的。我是团队的新手,但其他成员似乎也没有这个问题。

问题出在这里

如果我执行mvn clean compile,则会出现以下错误:

[ERROR] Failed to execute goal org.codehaus.mojo:dependency-maven-plugin:1.0:copy (copy-dependencies)
  on project deployable-war: Error copying artifact
  from C:\...\dependency\target\classes
  to C:\...\deployable-war\target\dependency\jws\lib\classes:
  C:\...\dependency\target\classes (Access is denied) -> [Help 1]

现在,奇怪的是源文件夹和目标文件夹(dependency\target\classesdeployable-war\target\dependency\jws\lib\classes)都是由Maven在相同的编译命令期间创建的。这是一个多模块项目,因此mvn compile将遍历所有9个模块。这是模块8。依赖模块是模块7。

如果之后我重新运行mvn compile(没有clean),则会出现相同的错误,因此这似乎不是时间问题。

如果我手动创建文件夹(mkdir ...\deployable-war\target\dependency\jws\lib\classes)并重新运行mvn compile,则一切正常。其中包括将JAR文件复制到lib文件夹中,该文件夹说它在尝试创建classes文件夹时被拒绝访问。

我尝试完全删除\target\文件夹。

我尝试以管理员身份运行Maven。

我尝试将项目的新副本从Git签出到本地的新目录中。

我已经检查了项目本身的文件夹权限,以确保我的用户和管理员用户具有完全控制权。

操作系统是Windows 10企业版。

有什么建议吗?

编辑:通过讨论,该错误一直跟踪到该模块的pom.xml的这一部分:

<build>
        <finalName>deployable</finalName>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>dependency-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/${project.build.finalName}/jws/lib</outputDirectory>
                            <artifactItems>
                                <artifactItem>

现在,问题似乎与artifactItem的子集有关-特别是artifactItems的一个子集,而该子集没有明确定义的destFileNames

1 个答案:

答案 0 :(得分:0)

很长时间回到这个问题,但 Gerold 的评论让我找到了正确的解决方案。问题是复制依赖性发生在打包之后。所以问题是我是 mvn clean compile,当我需要 mvn clean package

我一瘸一拐地走了太久才解决这个问题。多模块、相互依赖的项目的乐趣