我试图建立平面风格的多项目。
预期结果是gradle build
目录下的baseproj
使用libsproj
目录库编译和构建。
这是我的目录结构。
workspace
├── baseproj
│ ├── build.gradle
│ └── settings.gradle
│ └── src/main/java/sample.java
└── libsproj
├── batch
│ ├── foo.jar
│ └── some.jar
└── web
├── hoge.jar
└── some.jar
这是 build.gradle
:
apply plugin: "java"
apply plugin: "application"
jar.baseName = 'base'
version = ''
def mainClass = 'sample'
mainClassName = mainClass
repositories {
mavenCentral()
}
project(':libsproj') {
dependencies {
compile fileTree(dir: "${projectDir}/libs", include: '*.jar')
}
}
dependencies {
compile project ':libsproj'
testCompile 'junit:junit:4.12'
}
这是 setting.gradle
:
rootProject.name = 'baseproj'
rootProject.projectDir = new File(settingsDir, 'baseproj')
includeFlat 'libsproj'
这也是 gradle projects
输出:
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'baseproj'
\--- Project ':libsproj'
如果我运行 gradle build
,它说只是成功,但它没有构建我的Java文件。
:buildEnvironment
------------------------------------------------------------
Root project
------------------------------------------------------------
classpath
No dependencies
BUILD SUCCESSFUL
我理解是否在根目录下创建settings.gradle
(在此示例中为workspace
目录。),但此目录结构如下所示:
├── anotherproj
├── baseproj
├── libsproj
│ ├── batch
│ └── web
└── otherproj
otherproj
需要libsproj
,anotherproj
需要libsproj
和baseproj
,依此类推。
目前,我可以使用fileTree
中的build.gradle
解决方法,如下所示:
compile fileTree(dir: "../libsproj/batch", include: '*.jar')
但是,当添加其他项目时,它会被卡住。 (例如上面的otherproj
)
那么,我如何使用多平面目录进行构建。 你有什么想法?请帮我一把。
仅供参考:在发布此问题之前,我检查了这些问题。
答案 0 :(得分:1)
从我的实践中,为每个Gradle构建创建一个单独的存储库非常有用。
但是对于您的具体情况,您可以修复include
通配符表达式:
compile fileTree(dir: "${projectDir}/libs", include: '**/*.jar')
答案 1 :(得分:1)
尝试以下
将此添加到您的 workspace / buildproj / settings.gradle 文件
includeBuild '../libsproj/web'
遇到了类似的问题-看上去对我来说很有效-它为gradle世界带来了一些MultiRepo便利。