-
Notifications
You must be signed in to change notification settings - Fork 21
Repo清单格式
repo清单描述了项目工程的组织结构以及内部模块的依赖关系。
清单XML文件大致符合DTD(文档类型定义)结构:
<!DOCTYPE manifest [
<!ELEMENT manifest (default?,
project*,
module*)>
<!ELEMENT default EMPTY>
<!ATTLIST default fetch CDATA #IMPLIED>
<!ATTLIST default push CDATA #IMPLIED>
<!ELEMENT project (include*)>
<!ATTLIST project origin CDATA #IMPLIED>
<!ELEMENT include EMPTY>
<!ATTLIST include name IDREF #REQUIRED>
<!ELEMENT module (dependencies*)>
<!ATTLIST module name ID #REQUIRED>
<!ATTLIST module branch CDATA #IMPLIED>
<!ATTLIST module origin CDATA #IMPLIED>
<!ATTLIST module path CDATA #IMPLIED>
<!ATTLIST module substitute CDATA #IMPLIED>
<!ELEMENT dependencies ANY>
]>
以下是各元素及其属性的介绍。
文件的根元素。
最多指定一个default元素。
fetch
属性: Git “fetch” URL的前缀,它将与project元素或module元素的origin拼接成用于“git clone”项目的实际URL地址。
push
属性: Git “push” URL的前缀,它将与project元素或module元素的origin拼接成用于“git push”项目的实际URL地址。该属性为可选项; 如果未指定,则“git push”将使用与fetch属性相同的URL。
最多指定一个project元素。
project元素描述了根项目的远程Git仓库地址。根项目必须要有Gradle项目最基本的项目结构,且包含repo.xml
:
.
├── build.gradle
├── repo.xml
└── settings.gradle
其中settings.gradle和build.gradle应引用Gradle Repo相应的插件。
origin
属性: 远程Git仓库的URL。URL可采用相对地址的方式与default元素拼接成实际URL地址(e.g. ${fetch}/${origin}.git
),也可直接配置完整的URL。
可以指定一个或多个module元素。
每一个module元素代表了项目工程中的一个模块,用于描述该模块的远程Git仓库地址、使用的本地分支以及其他相关配置。
name
属性: 模块的名称,且唯一。模块的名称须与模块文件夹名称保持一致。
local
属性: 模块相对于根项目的路径。不可位于根项目路径之外。如果未指定,则默认位于根项目目录之下。模块对应的路径格式为${root_project}/${local}/${name}
origin
属性: 远程Git仓库的URL。URL可采用相对地址的方式与default元素拼接成实际URL地址(e.g. ${fetch}/${origin}.git
),也可直接配置完整的URL。
branch
属性: Git 分支的名称。如果未指定,则与project分支保持一致。
substitute
属性: 被替换的依赖。具体查看 DependencySubstitutions:substitute
可以指定一个或多个include元素。
定义哪些模块与根项目在同一个Git仓库。
name
属性: 取自module模块的name值。
最多指定一个dependencies元素。 用于声明模块间的依赖关系。
其子元素的节点名称取自 Gradle Dependency Configurations 中定义的值。比如:
<?xml version='1.0' encoding='UTF-8'?>
<manifest>
...
<module name="app">
<dependencies>
<api name="mylibrary2" />
<debugApi name="mylibrary2" />
<implementation name="mylibrary2" />
...
</dependencies>
</module>
...
</manifest>
子元素 name
属性: 取自module模块的name值。
位于根项目目录下($root_project/repo-local.xml
)。在本地清单中只支持module元素和dependencies元素。比如:
<?xml version='1.0' encoding='UTF-8'?>
<manifest>
<module name="xxx">
<dependencies>
<implementation name="xxx" />
</dependencies>
</module>
<module name="xxx" origin="xxx.git" />
</manifest>