将多项目gradle结构应用于项目时,我的settings.gradle如下所示:
include "source:compA:api"
include "source:compA:core"
include "source:compB"
Run Code Online (Sandbox Code Playgroud)
gradle项目给了我
Root project 'tmp'
\--- Project ':source'
+--- Project ':source:compA'
| +--- Project ':source:compA:api'
| \--- Project ':source:compA:core'
\--- Project ':source:compB'
Run Code Online (Sandbox Code Playgroud)
这正是目录结构!
在我的根目录中,我有一个build.gradle,它将java插件应用于所有子项目:
subprojects {
apply plugin: 'java'
}
Run Code Online (Sandbox Code Playgroud)
构建时我最终得到了工件:source:compA是空的,因为这实际上不是一个项目,只是子目录api和core是正确的java项目.
什么是避免空洞人工制品的最佳方法?
rod*_*ion 18
您可以尝试使用他们在Gradle自己的settings.gradle文件中使用的技巧.请注意每个子项目如何位于'subprojects/${projectName}'文件夹中,但subprojects文件夹本身不是项目.
所以在你的情况下你会做类似的事情:
include "source:compA-api"
include "source:compA-core"
include "source:compB"
project(':source:compA-api').projectDir = new File(settingsDir, 'source/compA/api')
project(':source:compA-core').projectDir = new File(settingsDir, 'source/compA/core')
Run Code Online (Sandbox Code Playgroud)
我故意省略了之间的冒号compA并api确保source:compA不会将其评估为项目容器.
或者,您可以尝试通过执行以下操作来排除source:compA项目的java插件:
def javaProjects() {
return subprojects.findAll { it.name != 'compA' }
}
configure(javaProjects()) {
apply plugin: 'java'
}
Run Code Online (Sandbox Code Playgroud)
编辑: 或者您可以尝试这样的事情(根据您的喜好调整):
def javaProjects() {
return subprojects.findAll { new File(it.projectDir, "src").exists() }
}
configure(javaProjects()) {
apply plugin: 'java'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6300 次 |
| 最近记录: |