我有一个由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)
答案 0 :(得分:1)
可以将子模块与NetBeans一起使用,即使git命令不能直接从NetBeans GUI工作:请参阅bug 271489。
至少应检测到更改(bug 207067)
但是,从没有NetBeans开始:
然后再次克隆该repo(git clone -b yourBranch --recursive
):将在一个命令中克隆主repo并初始化子模块内容。
打开NetBeans并检查一切是否可见。
答案 1 :(得分:1)
从NetBeans 8.2开始,本机支持git子模块。在NetBeans 8.1中,它们不是,我在这里设法使用它们:
我的问题不在于git命令行;您可以在此处找到有关该信息的信息:submodule tutorial on the SVN guide
在检查子模块是否按原样进行初始化后,我按照以下步骤操作:
这不会使子模块成为库:相反,NetBeans认为它是您代码的一部分。就我而言,这已经足够了,但我想指出来。
此外,预计所有以前的导入都会被破坏(包名称可能已更改)。
这个解决方案感觉像是一个黑客,所以我很乐意让别人解释如何让NetBeans将子模块识别为库,但与此同时我认为这仍然有用。