如何从Windows访问vagrant .ivy2目录?

时间:2016-07-14 08:29:15

标签: eclipse windows vagrant

我在Windows上使用Scala-IDE,我的项目文件是流浪汉。我在vagrant中使用sbt构建项目并运行服务器进行测试。对于部署,我使用sbt eclipse创建了eclipse配置文件并导入到Scala-IDE中。我的问题是,当我尝试运行项目时,它无法访问我的.ivy2文件,因为它们位于vagrant主文件夹中。我该如何解决这个问题?

Description Resource Path Location Type Project 'test-api' is missing required library: '\home\vagrant\.ivy2\cache\com.google.guava\guava\bundles\guava-18.0.jar' test-api Build path Build Path Problem

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。 sbt eclipse命令为Eclipse创建两个文件。它们是.classpath.project。您的.ivy2路径位于.classpath文件中。首先,我在我的vagrant目录中创建了一个新文件夹,并将我的主文件夹同步到这个新文件夹。将其添加到您的Vagrantfile

config.vm.synced_folder "data", "/home/vagrant"

然后我在项目文件夹中运行sbt eclipse。它在我的.classpath文件夹中创建了新的data文件。我写了一个python脚本,可以读取和替换.classpath文件中的路径。您应该在项目文件夹中运行此脚本,它将获取所有子目录并搜索.classpath个文件。然后用正确的路径替换错误的路径。

    import os
    import glob

    #variables
    current_dir = "/home/vagrant/"
    dest_dir = "C:/Users/Test/Desktop/vm/data/"

    #list for directories
    filesDepth1 = glob.glob('*/')
    dirsDepth1 = list(filter(lambda f: os.path.isdir(f), filesDepth1))
    print(dirsDepth1)

    #list for files
    for directory in dirsDepth1:
            print(directory)
            root = os.path.dirname(os.path.realpath(__file__)) + "/" + directory
            for item in os.listdir(root):
                    if os.path.isfile(os.path.join(root, item)):
                            print(item)
                            if(item == ".classpath"):
                                    FileName = root + "/" + item
                                    with open(FileName) as f:
                                            newText=f.read().replace(current_dir,dest_dir)
                                    with open(FileName, "w") as f:
                                            f.write(newText)