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/myapp
归 vagrant
所有。但是,myapp
的大多数(如果不是全部)目录都拥有完全开放的(766
或 777
)权限。
过去,我在来宾虚拟机上成功编译,位于主机和来宾共享的目录中。
我正在使用:
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 编译出错 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5: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