maven-resources-plugin:2.5 - 无法创建资源输出目录

问题描述 投票:14回答:8

我用它构建项目时偶尔会收到此错误

>mvn --version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: ...\apache-maven-3.0.5
Java version: 1.6.0_45, vendor: Sun Microsystems Inc.
Java home: ...
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

和错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.5:resources 
(default-resources) on project project-name: Cannot create resource output directory: 
 path\to\project\code\project-name\target\classes -> [Help 1]

注意:有时会发生这种情况,并且与代码无关。它可能发生在两个连续构建中的一个 - 一个接一个,完全相同的源代码。

有没有人知道如何完全避免它?它往往会打断相当耗时的构建: - /

maven
8个回答
19
投票

在Windows上,无法创建文件夹的原因是:

  1. 其他一些进程正在同时删除此文件夹
  2. 您无权访问此文件夹
  3. 该文件夹位于网络共享上

在Windows上,网络共享是出了名的不可靠。不要将它们用于任何自动化任务。始终使用驻留在本地硬盘上的所有文件构建项目。

如果您同时使用Maven和Eclipse进行构建,则应将它们配置为使用不同的目标文件夹。见https://stackoverflow.com/a/54366009/34088

你的POM应该是这样的:

<project>
  ...

  <build>
    <outputDirectory>${basedir}/${target.dir}/classes</outputDirectory>
    <testOutputDirectory>${basedir}/${target.dir}/test-classes</testOutputDirectory>
  </build>

  <properties>
    <target.dir>target</target.dir>
  </properties>

  <profiles>
    <profile>
      <id>eclipse-folders</id>
      <properties>
        <target.dir>target-eclipse</target.dir>
      </properties>
    </profile>
  </profiles>
  ...  

剩下的就是在IDE中启用配置文件eclipse-folders


7
投票

禁用IDE的自动构建(Eclipse或IntelliJ IDEA或其他)。它将与Maven构建冲突。


5
投票

每当我在Windows资源管理器中打开输出文件夹或父文件夹时运行该命令,我都会遇到此问题。

如果我在父级之上移动一级,则构建成功结束。


1
投票

对我来说,这个的原因只是在建立时使用我的git bash在所述文件夹中。确保您没有碰巧在任何其他程序中打开所述文件夹。


0
投票

在尝试运行First Cup教程时,我遇到了完全相同的问题。

我通过简单地关闭NetBeans并以管理员身份运行它来修复它(通过右键单击)。


0
投票

当我从windows coammandprompt给出mvn clean命令时,我的问题得到了解决


0
投票

在我的情况下,maven尝试创建目录的父目录是root,所以我在重新运行mvn命令之前做了一个sudo chown -R:/ path / to /目录来更改权限。


0
投票

就我而言,我在7zip中打开了jar,然后打开了目标文件夹。我运行我的应用程序并收到此错误。关闭7zip后,应用程序运行正常并且构建成功。

© www.soinside.com 2019 - 2024. All rights reserved.