我正在使用IntelliJ IDEA Community Edition 2016.1。 我把我的项目放在Git下,在GitHub上托管。
我在处理存储库中的模块依赖性时遇到问题。
配置指向特定JAR的路径时,这些路径会因平台而异。例如,在我的Windows 7计算机上,它们存储在D:\Francesco\Lib
中,而在我的Windows 10计算机上,它们位于C:\Users\Francesco\IdeaDependencies
。
问题在于,如果我选择同步模块IML文件,每个平台上的路径都是相同的,这样IDE就无法找到它们。
我该如何应对这个问题?
答案 0 :(得分:1)
将依赖项用作项目中的子模块,这样就无需关心它们在磁盘上的位置。
Submodules
允许将外部存储库嵌入到源树的专用子目录 中,总是指着一个特定的提交。
git submodule
强> 将你的大项目打破到子项目,就像你到目前为止一样 现在使用以下命令将每个子项目添加到主项目中:
git submodule add <url>
将项目添加到您的仓库后,您必须初始化并更新它。
git submodule init
git submodule update
从 Git 1.8.2 开始,添加了新选项--remote
:
git submodule update --remote --merge
fetch
每个子模块中上游的最新更改 merge them in
, check out
子模块的最新版本。
正如the docs所描述的那样:
--remote
此选项仅对更新命令有效。不使用超级项目记录的SHA-1来更新子模块,而是使用子模块的远程跟踪分支的状态。
这相当于在每个子模块中运行git pull
。
但是,如何在C中的错误修复方案中推送提交,这会影响与父层共享的代码?
再次:使用子模块会将代码放在主项目中作为其内容的一部分。将它本地放在文件夹中或将其作为子模块的一部分之间的区别在于,在子模块中,内容被管理(提交)到不同的独立存储库。
这是子模块的一个例子 - 项目在另一个项目中,每个项目都是一个独立的项目:
git subtree
强> 它允许您将任何存储库作为另一个存储库的子目录插入。
与submodule
非常相似,但主要区别在于管理代码的位置。在子模块中,内容被放置在一个单独的仓库中,并在那里进行管理,允许您将其克隆到许多其他仓库。
subtree
正在将内容作为根项目的一部分进行管理,而不是在单独的项目中。
不要写下如何设置并理解如何使用它,而只需阅读this excellent post即可解释所有内容。
答案 1 :(得分:0)
如果您正在寻找一个简单的解决方案,请将您的依赖项与项目文件一起存储,就像任何其他资源一样。
您可以在模块的内容根目录下创建名为lib
的{{3}}文件夹,并使用它来存储您的库。这样,他们的路径将相对于您的项目文件夹(例如file://$PROJECT_DIR$/lib/gson-2.6.2.jar
),并且您不必为每个平台调整它们。