如何使用Gradle构建没有根目录的多平面目录

时间:2017-01-27 07:34:32

标签: java gradle

我试图建立平面风格的多项目。

预期结果是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需要libsprojanotherproj需要libsprojbaseproj,依此类推。

目前,我可以使用fileTree中的build.gradle解决方法,如下所示:

compile fileTree(dir: "../libsproj/batch", include: '*.jar')

但是,当添加其他项目时,它会被卡住。 (例如上面的otherproj

那么,我如何使用多平面目录进行构建。 你有什么想法?请帮我一把。

仅供参考:在发布此问题之前,我检查了这些问题。

2 个答案:

答案 0 :(得分:1)

从我的实践中,为每个Gradle构建创建一个单独的存储库非常有用。

但是对于您的具体情况,您可以修复include通配符表达式:

compile fileTree(dir: "${projectDir}/libs", include: '**/*.jar')

答案 1 :(得分:1)

尝试以下

将此添加到您的 workspace / buildproj / settings.gradle 文件

 includeBuild '../libsproj/web'

遇到了类似的问题-看上去对我来说很有效-它为gradle世界带来了一些MultiRepo便利。

相关问题