使用Gradle构建多个Java项目

我正在把头发撕掉。 我已经将我的脚本剥离回Gradle教程页面提供的代码,因为我认为我要么做根本错误的事情,要么误解了一个多项目应用程序应该如何使用gradle进行结构化。

我在eclipse中有三个java项目,其中三个包含build.gradle脚本,只有一个包含settings.gradle脚本。 结构如下:

Scripts
-- build.gradle
-- settings.gradle
Database
-- build.gradle
Services
-- build.gradle

我正在尝试使用“脚本”项目中的构建脚本来构建“数据库”和“服务”项目。 要创建项目树,我在settings.gradle中有以下代码:

include 'Services', 'Database'

project (':Services').projectDir = new File(settingsDir, "../Services")
project (':Database').projectDir = new File(settingsDir, "../Database")

复制多项目教程(gradle文档)中的代码,我试图让每个构建脚本打印出一些文本,以确保一切正确设置。 我的最终目标是在执行'eclipseClasspath'时正确构建依赖关系,以便所有项目在eclipse中正确编译。 但是,文本没有按照我的预期打印出来!

以下是三个构建脚本中包含的内容:

脚本build.gradle

allprojects {
    task hello << { task -> println "I'm $task.project.name" }
}

subprojects {
    hello << {println "- I depend on Scripts"}
}

数据库build.gradle

hello.doLast { 
    println "- I'm inside database" 
}

服务build.gradle

hello.doLast { 
    println "- I'm inside services" 
}

在'Scripts'项目中,当我运行'gradle -q hello'时,我得到以下结果:

I'm Scripts
I'm AnprDatabase
- I depend on Scripts
I'm Database
- I depend on Scripts

为什么文本' - 我在数据库中'和' - 我内部服务'没有出现? 我有点困惑。 我只能猜测它与我的项目结构有关。 有人可以证实这种情况吗? 如果不是,问题是什么? 如前所述,我已将我的脚本剥离回这个简单示例,因为我无法使用相同的结构在每个项目构建脚本中运行依赖项。

非常感谢您提供的任何帮助。


我设法弄清楚为什么它不起作用。 这是我的一个愚蠢的错误。 “数据库”和“服务”项目与我的'脚本'项目不在同一个目录中。 我已经将这些项目检查到一个git仓库,它将本地目录从我的Eclipse工作区复制到本地git仓库。 我没有将'Scripts'项目检入到我的git仓库中,所以它仍然驻留在我的Eclipse工作区中。 现在似乎很明显,为什么它不工作! 检查我的“脚本”项目并更改settings.gradle中的其他项目的路径已修复此问题。

有意思的是,如果不能找到定义的项目,Gradle将创建一个空项目,而不是抛出FileNotFoundException或类似的东西。 这是我没有赞赏的东西。 起初我认为这是一种奇怪的行为,但我认为它让用户有能力在脚本运行时即时创建他的项目。 不知道如果我喜欢这个,但!

因此,在包含项目时,请务必确保您在设置中导航到正确的目录! 否则,你可能会像我一样犯规。

链接地址: http://www.djcxy.com/p/54375.html

上一篇: Building multi java project using Gradle

下一篇: with not returning json from my model?