如何将git子模块导入NetBeans 8.1?

时间:2017-12-21 22:07:28

标签: git netbeans git-submodules

我有一个由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中的'libraries'文件夹然后'添加项目/文件夹'来手动将子模块添加到库中。我已经尝试过这个子模块中的各种文件夹,但似乎没有让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)

2 个答案:

答案 0 :(得分:1)

可以将子模块与NetBeans一起使用,即使git命令不能直接从NetBeans GUI工作:请参阅bug 271489

至少应检测到更改(bug 207067

但是,从没有NetBeans开始:

  • 在您的工作树中(在您的磁盘上),检查您的新分支,添加您的子模块(即声明其他Git仓库的URL,其中包含您的依赖关系来源)
    不要忘记在主仓库中添加,提交和推送。

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

打开NetBeans并检查一切是否可见。

答案 1 :(得分:1)

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

我的问题不在于git命令行;您可以在此处找到有关该信息的信息:submodule tutorial on the SVN guide

在检查子模块是否按原样进行初始化后,我按照以下步骤操作:

  1. 打开NetBeans
  2. 在"项目"选项卡,右键单击项目,选择"属性"
  3. 转到"来源"选项卡,选择"添加文件夹"
  4. 选择子模块中的src /文件夹
  5. 这不会使子模块成为库:相反,NetBeans认为它是您代码的一部分。就我而言,这已经足够了,但我想指出来。

    此外,预计所有以前的导入都会被破坏(包名称可能已更改)。

    这个解决方案感觉像是一个黑客,所以我很乐意让别人解释如何让NetBeans将子模块识别为库,但与此同时我认为这仍然有用。