通过软链实现特定的项目文件结构

603 阅读2分钟

一、背景

安卓项目中,有时会存在通用的项目技术文件结构,和依据现实需要组织的文件结构矛盾的情况。如Gradle插件在开发过程中通常放在项目的buildSrc目录下,版本稳定后再发布到Maven。但同时,在特定的需求背景下,又经常存在一些特定化的目录层次,如将Gradle插件目录以其他名称命名,甚至在其他的文件路径中。再如:开源库中经常存在主工程目录下是源码,Demo的App并非主工程的App,而是以二级目录结构存在,等等。

最近在看开源项目时,发现一些工程在面对此类矛盾时,采用了软件的处理方式,感觉很有技巧性,非常实用,决定Mark下。


二、方案

软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。

在某些需求场景下,可以通过软链,达到想要的结果。

软链的生成方式非常简单,简单点可以理解成Windows上的快捷方式,可以直接通过如下命令形成软链关系。

ln -s  ~/original ~/symlink

其中,original作为原始文件,symlin作为新生成的软链文件,可以直接链接到原始文件中去。

例如,上述中的Gradle插件开发中的问题,可以直接生成一个buildSrc软链:

ln -s  ~/xxx/graldePluginDir ~/ttt/buildSrc

注,实际项目开发中,我们应该使用相对路径。否则其他同事构建项目时会出现问题。

相对路径形式的命令写法如下:

ln -s  graldePluginDir  buildSrc

可以通过ll直接看一下他们之间的差异: 绝对路径形式生成的软链:

相对路径形式生成的软链:

如此,插件开发过程中,就可以很方便的开发调试等。

其他类似的需求场景都可以采用此种方案。

end~