安卓项目中,有时会存在通用的项目技术文件结构,和依据现实须要组织的文件结构矛盾的状况。如Gradle插件在开发过程当中一般放在项目的buildSrc目录下,版本稳定后再发布到Maven。但同时,在特定的需求背景下,又常常存在一些特定化的目录层次,如将Gradle插件目录以其余名称命名,甚至在其余的文件路径中。再如:开源库中常常存在主工程目录下是源码,Demo的App并不是主工程的App,而是以二级目录结构存在,等等。markdown
最近在看开源项目时,发现一些工程在面对此类矛盾时,采用了软件的处理方式,感受颇有技巧性,很是实用,决定Mark下。ui
软连接又叫符号连接,这个文件包含了另外一个文件的路径名。能够是任意文件或目录,能够连接不一样文件系统的文件。spa
在某些需求场景下,能够经过软链,达到想要的结果。插件
软链的生成方式很是简单,简单点能够理解成Windows上的快捷方式,能够直接经过以下命令造成软链关系。调试
ln -s ~/original ~/symlink
复制代码
其中,original做为原始文件,symlin做为新生成的软链文件,能够直接连接到原始文件中去。code
例如,上述中的Gradle插件开发中的问题,能够直接生成一个buildSrc软链:orm
ln -s ~/xxx/graldePluginDir ~/ttt/buildSrc
复制代码
注,实际项目开发中,咱们应该使用相对路径。不然其余同事构建项目时会出现问题。开发
相对路径形式的命令写法以下:源码
ln -s graldePluginDir buildSrc
复制代码
能够经过ll
直接看一下他们之间的差别: 绝对路径形式生成的软链: it
相对路径形式生成的软链:
如此,插件开发过程当中,就能够很方便的开发调试等。
其余相似的需求场景均可以采用此种方案。
end~