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 可以处理不符合默认约定的构建目录结构吗?的主要内容,如果未能解决你的问题,请参考以下文章