Gradle 可以处理不符合默认约定的构建目录结构吗?

Posted

技术标签:

【中文标题】Gradle 可以处理不符合默认约定的构建目录结构吗?【英文标题】:Can Gradle handle a build directory structure that does not conform default conventions? 【发布时间】:2011-02-02 20:01:09 【问题描述】:

我正在开发一个基于 java ant+ivy 的项目,该项目具有以下目录结构:

projectRoot/src
projectRoot/classes
projectRoot/conf
projectRoot/webservices

这在 ant 中运行良好,但我希望迁移到 gradle。

有没有办法在 Gradle 中定义非 maven 目录结构,或者我应该寻找 mavenize?

【问题讨论】:

【参考方案1】:

Gradle 很容易适应任何目录结构。请参阅 Gradle 用户指南的 Working with source sets 部分。

【讨论】:

【参考方案2】:

非标准项目目录结构示例(自定义布局):

sourceSets 
    main 
        java 
            srcDir 'sources/main/java'
        
        outputDir = file("$workDir/client/program")
        // For older version (now deprecated):
        //output.classesDir = "$workDir/client/program"
    
    test 
        java 
            srcDir 'sources/test/java'
        
        outputDir = file("$workDir/client/tests")
        // For older versions (now deprecated):
        //output.classesDir = "$workDir/client/tests"
        //output.resourcesDir = "$workDir/client/tests"
    
    resources 
        srcDirs 'sources/test/res'
    

【讨论】:

今天经过几个小时的搜索,这解决了我的问题。出于某种原因, --project-root 参数和 rootProject.projectDir 被忽略了吗?无论我做什么,build.gradle 中的“println project.projectDir”总是回显 build.gradle 所在的文件夹。使用:srcDir '../../src/main/java" 解决了这个问题。谢谢! 【参考方案3】:

试试:

sourceSets 
    main 
        java 
            srcDirs = ['src/java']
        
        resources 
            srcDirs = ['src/resources']
        
    

sourceSets 
    main.java.srcDirs += 'src/java'
    main.resources.srcDirs += 'src/resources'

【讨论】:

以上是关于Gradle 可以处理不符合默认约定的构建目录结构吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在mac上安装gradle

如何在mac上安装gradle

如何在mac上安装gradle

如何在mac上安装gradle

如何在mac上安装gradle

Apache Maven:构建生命周期