首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Gradle构建无根dir的多平面dir

如何使用Gradle构建无根dir的多平面dir
EN

Stack Overflow用户
提问于 2017-01-27 07:34:31
回答 2查看 1.5K关注 0票数 2

我试着建造多个平面风格的项目。

预期的结果是,gradle buildbaseproj目录下使用libsproj目录库进行编译和构建。

这是我的目录结构。

代码语言:javascript
复制
workspace
├── baseproj
│   ├── build.gradle
│   └── settings.gradle
│   └── src/main/java/sample.java
└── libsproj
    ├── batch
    │   ├── foo.jar
    │   └── some.jar
    └── web
        ├── hoge.jar
        └── some.jar

这是我的build.gradle

代码语言:javascript
复制
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

代码语言:javascript
复制
rootProject.name = 'baseproj'
rootProject.projectDir = new File(settingsDir, 'baseproj')
includeFlat 'libsproj'

这也是gradle projects输出:

代码语言:javascript
复制
------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'baseproj'
\--- Project ':libsproj'

如果我运行gradle build,,它说是成功的,但它没有构建我的Java文件。

代码语言:javascript
复制
:buildEnvironment

------------------------------------------------------------
Root project
------------------------------------------------------------

classpath
No dependencies

BUILD SUCCESSFUL

我理解如果我在根dir下创建settings.gradle (在本例中是workspace dir ),但是这个目录结构如下所示:

代码语言:javascript
复制
├── anotherproj
├── baseproj
├── libsproj
│   ├── batch
│   └── web
└── otherproj

otherproj需要libsprojanotherproj需要libsprojbaseproj,依此类推。

此时,我可以在fileTree中使用build.gradle,如下所示:

代码语言:javascript
复制
compile fileTree(dir: "../libsproj/batch", include: '*.jar')

但是,当其他项目被添加时,它将陷入困境。(例如上面的otherproj )

那么,我如何建立多平面目录。你有什么想法吗?请帮我一把。

FYI:在发布这个问题之前,我检查了这些问题。

EN

回答 2

Stack Overflow用户

发布于 2017-01-30 06:32:31

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

但对于特定情况,只需修复include通配符表达式:

代码语言:javascript
复制
compile fileTree(dir: "${projectDir}/libs", include: '**/*.jar')
票数 1
EN

Stack Overflow用户

发布于 2018-09-28 08:12:44

尝试以下几点

将其添加到工作区/buildproj/setings.gradle文件中

代码语言:javascript
复制
 includeBuild '../libsproj/web'

有一个类似的问题--就像它看起来对我有用--它给MultiRepo带来了一些便利。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41888922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档