Maven Clean 在 Linux Vagrant 共享驱动器上失败

Posted

技术标签:

【中文标题】Maven Clean 在 Linux Vagrant 共享驱动器上失败【英文标题】:Maven Clean Fails on Linux Vagrant Shared Drive 【发布时间】:2014-04-15 16:08:49 【问题描述】:

使用 vagrant,我 git clone'd 我的 java 应用程序到 c:/shared。在我的Vagrantfile 中,我指定主机的c:/shared 将映射到我的虚拟机上的/home/vagrant/myapp

当我在虚拟机中运行mvn clean compile 时,我遇到了这个错误:

core/myapp/target/classes/com/myapp/...
        at org.apache.maven.plugin.clean.CleanMojo.execute(CleanMojo.java:215)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        ... 19 more
Caused by: java.io.IOException: Failed to delete core/myapp/target/classes/com/myapp/...
        at org.apache.maven.plugin.clean.Cleaner.delete(Cleaner.java:249)
        at org.apache.maven.plugin.clean.Cleaner.delete(Cleaner.java:191)
        at org.apache.maven.plugin.clean.Cleaner.delete(Cleaner.java:158)

但是,Maven 构建在我的 Windows(主机)机器上成功。

运行ls 会给出奇怪的输出,因为权限显示为问号(?):

[vagrant-centos65 parent]$ ls -lrot target/...
ls: cannot access ...
?????????? ? ? ?            ? $Class$$doMethod$1$1$$anonfun$apply$2.class

我以用户 kevin 运行,其中 /home/vagrant/myappvagrant 所有。但是,myapp 的大多数(如果不是全部)目录都拥有完全开放的(766777)权限。

过去,我在来宾虚拟机上成功编译,位于主机和来宾共享的目录中。

我正在使用:

vagrant - 1.3.5
Maven - 3.2.1
VirtualBox - 4.3.8

此外,我观察到此特定文件夹 (C:) 未根据此 post 编入索引。

EDIT即使在使用smb 托管文件时,我也会看到相同的错误。

为什么构建会在主机上成功,而不是在来宾上?

【问题讨论】:

哪个流浪版本?哪个同步类型的文件夹? 流浪者 1.3.5。我从未指定同步。我在主机上使用 Windows 【参考方案1】:

有一个类似的问题,但主要是因为我很笨,并且在主机上运行了 Eclipse,并且在共享区域 abd 中选择了“自动构建”的项目。

所以每次maven删除一个目标文件,eclipse都会重新创建它...

【讨论】:

【参考方案2】:

在编译期间,Maven 将 Scala 源文件编译成 CLASS 文件。

一个.class 文件的长度为161。该文件的路径长度约为 100。

161 + ~90 = ~261 # 在 Windows 上超过 255 路径长度

为了解决这个问题,@monkjack 告诉我如何将生成的 CLASS 文件的长度限制为 75 个字符 - https://***.com/a/23138361/409976。

【讨论】:

以上是关于Maven Clean 在 Linux Vagrant 共享驱动器上失败的主要内容,如果未能解决你的问题,请参考以下文章

maven 打包和构建的Linux命令(mvn)

maven clean 报错

maven 编译出错 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean

maven clean失败 是因为啥

maven 编译出错 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:3.1.0:clean