我正在尝试为我的项目布局已经指定的情况制作Gradle多项目构建.我有这样的事情:
-->Shared\
---->SharedComponent1\
------>build.gradle
------>src\
...
---->SharedComponent2\
------>build.gradle
...
-->Product1\
---->ProductComponent1\
------>build.gradle
---->ProductComponent2\
------>build.gradle
...
---->build\
------>settings.gradle
Run Code Online (Sandbox Code Playgroud)
我的settings.gradle看起来像这样:
rootProject.name = 'Product1'
rootProject.projectDir = new File( "${ProjectsRoot}" )
include 'Shared:SharedComponent1'
include 'Shared:SharedComponent2'
include 'Product1:ProductComponent1'
include 'Product1:ProductComponent2'
Run Code Online (Sandbox Code Playgroud)
当我在build文件夹中运行Gradle时,如下所示:
gradle -PProjectsRoot=c:\my\project\root\dir projects
Run Code Online (Sandbox Code Playgroud)
我明白了:
:projects
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'build'
No sub-projects
To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :tasks
BUILD SUCCESSFUL
Run Code Online (Sandbox Code Playgroud)
即它没有找到我正在尝试构建的项目.我正在尝试使用Gradle的多项目支持吗?还是我在错误的树上吠叫?
Pet*_*ser 30
几个指针:
projectDir为所有项目设置,而不仅仅是根项目.你应该使用相对路径,例如rootProject.projectDir = new File(settingsDir, "../foo")和project(":sub1").projectDir = new File(rootDir, "bar").这里,settingsDir指的是包含的目录settings.gradle,并且rootDir是一个简写rootProject.projectDir.(root)Project.children.请注意,settings.gradle并build.gradle使用不同的类型来表示项目 - ProjectDescriptor和Project.settings.gradle的目录或其子目录中调用Gradle .从可用性的角度来看,最好放入settings.gradle目录层次结构的根目录.有关更多信息,请参阅Gradle构建语言参考中的设置和Gradle用户指南中的多项目构建章节.
And*_*bin 11
为了完整性,settings.gradle解决了我上面的具体例子如下:
rootProject.name = 'Product1'
def projectTreeRootDir = new File( "${ProjectsRoot}" )
// Shared components
def sharedRootDir = new File( projectTreeRootDir, 'Shared' )
include ':SharedComponent1'
project( ':SharedComponent1' ).projectDir = new File( sharedRootDir, 'SharedComponent1' )
include ':SharedComponent2'
project( ':SharedComponent2' ).projectDir = new File( sharedRootDir, 'SharedComponent2' )
// Product components
includeFlat 'ProductComponent1', 'ProductComponent2'
Run Code Online (Sandbox Code Playgroud)
显然,这不会扩展到大量子项目,并且可以使用上面提到的提示明显更好地完成.
| 归档时间: |
|
| 查看次数: |
22200 次 |
| 最近记录: |