在main中将main从存储库根目录移出

莫比乌斯(Moebius):

我正在创建一个项目。由于项目存储库的根目录已经有很多东西(doc,README.md ...),因此我希望所有源代码都放在src文件夹中,而所有测试代码都放在名为的文件夹中测试:

\go
  \src
    \github.com
      \user
        \my_project
          \src
            main.go
            some_func.go
          \test
            test_main.go
            test_some_func.go
          \doc
          README.md

但是我有两个问题:

  • 当我在my_project文件夹中时,build命令不起作用。我必须进入my_project / src才能成功运行构建。我想从my_project文件夹中执行此操作。如何强制去了解my_project的源在src代码中?
  • 然后,由go install命令生成的可执行文件名为src。如何更改该可执行文件的名称?
罗布·纳皮尔(Rob Napier):

我希望所有源代码都放在src文件夹中,所有测试代码都在名为test的文件夹中:

Go具有一种组织源代码的方式。不要打这个。这就是系统的工作方式。按照Go希望的方式组织代码。不要试图以您学到的其他语言来强迫Go工作。每种语言都有自己的处理方式。它们都不是“正确的”。像Java一样,Go对应该执行的操作也有非常具体的想法。那样做。(这不是关于Go是“正确”还是Go是“错误”的争论。Go是Go,它以Go的方式进行操作。)

特别是,您不应创建另一个“ src”目录。“ go”树的顶部已经有一个“ src”目录。如果创建另一个冗余的“ src”目录,则项目的软件包名称为“ github.com/user/my_project/src”,这可能不是您想要的。

若要将可执行文件命名为所需名称,请将其放置在名为所需名称的目录中(可能是“ my_project”)。将测试文件与他们测试的文件放在一起。这就是go的工作方式。

因此,您的树应如下所示:

\go
  \src
    \github.com
      \user
        \my_project
          main.go
          some_func.go
          main_test.go
          some_func_test.go
          \doc
            README.md

尝试执行除此以外的其他操作将一遍又一遍地进行,并且“如何使构建系统执行此其他操作”的问题将不断返回“以构建系统期望的方式输入您的代码”。

有关Go期望的内容以及如何组织代码的详细信息,请参阅Command Go文档中的GOPATH环境变量以这种方式构建系统一段时间后,您将开始看到可以从中偏离的位置(例如为测试实用程序创建其他目录,而不是为测试用例创建目录)。在尝试了标准Go方式之前,不要开始偏离。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何移动git存储库的根目录?

汇总根目录和存储库

是否有MSBuild属性提供存储库根目录?

根目录外的存储路径

将 nightwatch.conf.js 移出根目录

如何将存储库的根目录设置到另一个目录

如何获取当前目录相对于git存储库根目录的路径?

flake8 --diff无法从存储库根目录以外的目录运行

Node.js package.json是否需要位于存储库的根目录?

svn-获取在存储库根目录中创建的文件夹的历史记录

如何使用SBT设置常春藤共享存储库根目录?

git status 的 Git 别名列出了相对于存储库根目录的文件

在GIT中将现有目录创建为存储库

如何使用git ignore忽略非dotfiles(所有非隐藏目录,在我的存储库的根目录中)?

使用子存储库main创建debian本地存储库,非免费

将尽可能多的代码行 # 移出 main

将代码移出main()之外时出现分段错误

我的 gitignore 文件应该是什么样的,只在存储库根目录中添加 git add -A 文件

如何将目录标记为库根目录?

如何在Webpack中将'src'设置为资源根目录?

为什么要在节点应用程序根目录的package.json中需要main属性,如果它是用来告诉包和模块的入口点的呢?

如何在Eclipse Luna中将本地目录设置为SVN存储库

递归地将父节点的标题存储到根目录

Firebase将数据存储到根目录中

如何在 Spring Boot 的 main 方法中创建存储库实例?

无法在Spring Boot应用程序的Main方法中使用@Autowired JPA存储库

是否有示例存储库尝试在Figwheel-Main上尝试Calva?

phpmailer通过将凭据从INI文件的Web根目录移出来确保安全的方法

Android Studio:在项目根目录之外添加库