【问题标题】:How to import git submodules into NetBeans 8.1?如何将 git 子模块导入 NetBeans 8.1?
【发布时间】:2018-02-09 20:38:30
【问题描述】:

我有一个由 Git 存储库控制的 NetBeans 项目。我正在使用一个 GitHub 项目作为依赖项;当我开始这个项目时,我是 Git 新手,所以我只是克隆了依赖项,获取了源代码并将其作为一个包放入,就好像它是我自己的一样。

现在我对 Git 有了更多的经验,我希望将依赖项作为一个 git 子模块,这样我就可以使用它,轻松更新它,并将所有东西放在一个地方,以便最终用户(我的项目是一个 API)不需要将依赖项克隆为辅助项目。

我从the SVN guide 中发现了子模块;于是新建了一个分支,删除了依赖包并初始化了子模块,然后打开了NetBeans,但是NetBeans就是看不到。

我原以为子模块会出现在库列表之类的某个地方,但它肯定不存在。

在对 NetBeans 论坛进行研究后,我注意到他们从未在文档中提及子模块。

那么,是否可以在 NetBeans 中使用子模块?我不是在寻找任何复杂的东西,只是将我的项目和依赖项分开。除了编译依赖项(即没有修改)之外,我不打算做任何事情,但如果可能的话,我宁愿保持这个可行。如果这在 NetBeans 下是不可能的,那么最接近实现这一目标的方法是什么? (我听说过 Maven,但不知道它是什么)

相关链接:The project I'm talking about (GitHub)the dependency (GitHub)

[编辑] 检查后,我的问题不是来自 git 命令行(git 子模块在项目文件夹中被初始化),而是似乎是 NetBeans 配置问题。基于错误(每次导入时“包...未找到”),我猜 NetBeans 只是不知道在哪里可以找到子模块的源。我试图通过右键单击 IDE 中的“库”文件夹然后“添加项目/文件夹”来手动将子模块添加到库中。我已经为子模块中的各种文件夹尝试了这个,但似乎没有一个让 NetBeans 找到源(虽然它在那里)。 Here is the link to the dependency, maybe there's something specific about how the folders are laid down, I don't know. (from GitHub)

【问题讨论】:

    标签: git netbeans git-submodules


    【解决方案1】:

    可以在 NetBeans 中使用子模块,即使 git 命令不能直接从 NetBeans GUI 运行:请参阅 bug 271489

    至少应该检测到更改 (bug 207067)

    但是,开始时不要使用 NetBeans:

    • 在您的工作树中(在您的磁盘上),签出您的新分支后,添加您的子模块(即声明具有您的依赖源的另一个 Git 存储库的 URL)
      不要忘记从您的主仓库添加、提交和推送。

    然后再次克隆该 repo (git clone -b yourBranch --recursive):这将克隆您的主 repo 并初始化子模块内容,所有这些都在一个命令中。

    打开 NetBeans 并检查所有内容是否可见。

    【讨论】:

    • 我已经这样做了,命令行没有显示任何错误;但是在 NetBeans 中,子模块没有显示在“库”文件夹中,也没有显示在我检查的任何地方,并且 NetBeans 中的每个导入都被破坏了(“package minimumjson 不存在”)。项目文件中是否需要任何配置?
    • @CLOVIS "命令行没有显示任何错误": 但是你的子模块子文件夹在git clone -b yourBranch --recursive之后是否正确填写?
    • 是的,项目的根目录下有一个文件夹,包含子模块的完整 GitHub 数据,这让我觉得 NetBeans 只是缺少它的路径? (我正在运行 NetBeans 8.1)
    • 通过右键单击“库”然后“添加项目/文件夹”并添加子模块,我可以访问它的代码 - 尽管它充满了错误,因为那里的文件没有“看到”每个其他,如果我自己添加导入,它们就会消失,但我的主项目仍然看不到包的库
    • @CLOVIS 好的,所以这似乎是 NetBeans 项目配置问题,而不是 Git 子模块问题。
    【解决方案2】:

    从 NetBeans 8.2 开始,本机支持 git 子模块。在 NetBeans 8.1 中,它们不是,这是我设法使用它们的方法:

    我的问题不在于 git 命令行;你可以在这里找到相关信息:submodule tutorial on the SVN guide

    在检查子模块已按预期初始化后,我按照以下步骤操作:

    1. 打开 NetBeans
    2. 在“项目”选项卡中,右键单击项目,选择“属性”
    3. 转到“来源”选项卡,选择“添加文件夹”
    4. 选择子模块中的src/文件夹

    这不会使子模块成为库:相反,NetBeans 认为它​​是您代码的一部分。就我而言,这已经足够了,但我想指出这一点。

    另外,预计您之前的所有导入都将被破坏(包名称可能已更改)。

    这个解决方案感觉像是一个 hack,所以我很乐意有人解释如何让 NetBeans 将子模块识别为一个库,但同时我认为这仍然可以提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 2015-06-27
      • 2020-12-06
      • 2014-09-27
      • 2021-05-02
      • 2022-01-01
      • 2020-05-06
      相关资源
      最近更新 更多