我试着建造多个平面风格的项目。
预期的结果是,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我理解如果我在根dir下创建settings.gradle (在本例中是workspace dir ),但是这个目录结构如下所示:
├── anotherproj
├── baseproj
├── libsproj
│ ├── batch
│ └── web
└── otherprojotherproj需要libsproj,anotherproj需要libsproj和baseproj,依此类推。
此时,我可以在fileTree中使用build.gradle,如下所示:
compile fileTree(dir: "../libsproj/batch", include: '*.jar')但是,当其他项目被添加时,它将陷入困境。(例如上面的otherproj )
那么,我如何建立多平面目录。你有什么想法吗?请帮我一把。
FYI:在发布这个问题之前,我检查了这些问题。
发布于 2017-01-30 06:32:31
根据我的实践,为每个Gradle构建创建一个单独的存储库是非常有用的。
但对于特定情况,只需修复include通配符表达式:
compile fileTree(dir: "${projectDir}/libs", include: '**/*.jar')发布于 2018-09-28 08:12:44
尝试以下几点
将其添加到工作区/buildproj/setings.gradle文件中
includeBuild '../libsproj/web'有一个类似的问题--就像它看起来对我有用--它给MultiRepo带来了一些便利。
https://stackoverflow.com/questions/41888922
复制相似问题