【问题标题】:Building multi java project using Gradle使用 Gradle 构建多 java 项目
【发布时间】:2011-10-30 00:12:48
【问题描述】:

我正在为此撕毁我的头发。我已经将我的脚本直接剥离回 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 docs)中的代码,我试图让每个构建脚本打印出一些文本,以确保一切设置正确。我的最终目标是在执行“eclipseClasspath”时正确构建依赖项,以便所有项目在 eclipse 中正确编译。但是,文本并没有像我预期的那样打印出来!

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

脚本 build.gradle

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

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

数据库构建.gradle

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

服务构建.gradle

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

在“脚本”项目中,当我运行“gradle -q hello”时,我得到以下结果:

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

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

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

【问题讨论】:

  • 对我来说很好,gradle-1.0-milestone-3
  • 我正在使用相同版本的 gradle。您的应用程序是否包含与我的结构相同的 java 项目?
  • 对您来说还有一个问题,您的构建脚本是从等效的“脚本”项目中运行的,还是位于三个项目的根目录中?我想尝试从“脚本”项目中运行我的项目
  • 就目前而言,这个问题与 Eclipse 没有任何关系。应该改进问题的标题。
  • 道歉彼得,我已经添加了改进的标题以提及 eclipse

标签: java eclipse gradle


【解决方案1】:

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

有趣的是,如果 Gradle 找不到定义的项目,Gradle 将创建一个空项目,而不是抛出 FileNotFoundException 或类似的东西。这是我没有意识到的。起初我认为这是一种奇怪的行为,但我想它使用户能够在脚本运行时动态创建他的项目。不知道我是否喜欢这样!

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

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2020-04-13
    • 1970-01-01
    • 2019-03-26
    • 2012-08-01
    相关资源
    最近更新 更多