使用intellij

时间:2018-10-03 13:37:40

标签: go intellij-idea

我在IntelliJ Ultimate 2018.2.2中使用MacOS Mojave。

我写了一个go应​​用程序,它从我的项目目录中加载配置文件。我创建了一个InitConfig()函数来将JSON文件加载到结构中。这是我的Config.go文件的代码

package main

import (
    "github.com/tkanos/gonfig"
    "log"
)

type Configuration struct {
    WebServerPort   int
    DbName string
    DbUser string
    DbPassword string
    DbPort int
    CertFile string
    KeyFile string
    EnableHttps bool
}

var AppConfiguration Configuration

func InitConfig() {
    AppConfiguration = Configuration{}
    err := gonfig.GetConf(ExPath + "/config/config.json", &AppConfiguration)
    if err != nil {
        log.Fatalf("could not parse configuration file: %v",err)
    }
}

我使用一个名为ExPath的变量,其中包含正在运行的二进制文件的当前目录,我使用以下代码(Path.go)创建了该变量:

package main

import (
    "log"
    "os"
    "path/filepath"
)

var ExPath string

func InitPath() {
    ex, err := os.Executable()
    if err != nil {
        log.Fatalf("could not get executable path: %v",err)
    }
    ExPath = filepath.Dir(ex)
}

当我尝试运行或调试应用程序时,intellij正在创建一个目录,在该目录中可以编译和运行该应用程序,我如何告诉它也复制json文件?

当我尝试运行/调试我的应用程序时,我得到:

could not parse configuration file: open /private/var/folders/60/qzt2pgs173s4j_r6lby_mw1c0000gn/T/config/config.json: no such file or directory

我检查了一下,该目录确实不包含我的配置目录。所以..有没有办法让intellij知道它应该在执行我的项目之前复制它?

谢谢!

1 个答案:

答案 0 :(得分:0)

看来,解决方案很简单。我需要做的就是将运行/调试配置的“输出目录”设置为项目目录。然后intellij在同一目录中执行文件,它可以找到/config/config.json