Scr*_*age 7 java eclipse gradle
我正在撕裂我的头发.我已经将我的脚本剥离回Gradle教程页面中提供的代码,因为我认为我要么做了一些根本错误的事情,要么误解了如何使用gradle构建多项目应用程序.
我在eclipse中有三个java项目,其中三个包含build.gradle脚本,只有一个包含settings.gradle脚本.结构如下:
Scripts
-- build.gradle
-- settings.gradle
Database
-- build.gradle
Services
-- build.gradle
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用"脚本"项目中的构建脚本构建"数据库"和"服务"项目.要创建项目树,我在settings.gradle中有以下代码:
include 'Services', 'Database'
project (':Services').projectDir = new File(settingsDir, "../Services")
project (':Database').projectDir = new File(settingsDir, "../Database")
Run Code Online (Sandbox Code Playgroud)
复制多项目教程中的代码(gradle docs),我试图让每个构建脚本打印出一些文本,以确保所有内容都正确设置.我的最终目标是在执行'eclipseClasspath'时正确构建依赖项,以便所有项目在eclipse中正确编译.但是,正如我所料,文本没有打印出来!
以下是三个构建脚本中包含的内容:
脚本build.gradle
allprojects {
task hello << { task -> println "I'm $task.project.name" }
}
subprojects {
hello << {println "- I depend on Scripts"}
}
Run Code Online (Sandbox Code Playgroud)
数据库build.gradle
hello.doLast {
println "- I'm inside database"
}
Run Code Online (Sandbox Code Playgroud)
服务build.gradle
hello.doLast {
println "- I'm inside services"
}
Run Code Online (Sandbox Code Playgroud)
在'Scripts'项目中,当我运行'gradle -q hello'时,我得到以下结果:
I'm Scripts
I'm AnprDatabase
- I depend on Scripts
I'm Database
- I depend on Scripts
Run Code Online (Sandbox Code Playgroud)
为什么文本' - 我在数据库内'和'我在服务内'没有出现?我有点困惑.我只能猜测它与我的项目结构有关.有人可以证实这是事实吗?如果没有,问题是什么?如上所述,我已经将我的脚本剥离回这个简单的示例,因为我无法使用相同的结构在每个项目构建脚本中运行依赖项.
非常感谢任何提供的帮助.
我已经设法弄清楚为什么它不起作用。对我来说这是一个愚蠢的错误。“数据库”和“服务”项目与我的“脚本”项目不在同一目录中。我已将这些项目签入 git 存储库,该存储库将本地目录从我的 Eclipse 工作区复制到本地 git 存储库。我没有将“Scripts”项目签入我的 git 存储库,因此它仍然驻留在我的 Eclipse 工作区中。现在看起来很明显为什么它不起作用!检查我的“脚本”项目并更改 settings.gradle 中其他项目的路径已经解决了问题。
有趣的是,如果 Gradle 找不到定义的项目,它不会抛出 FileNotFoundException 或类似的东西,而是会创建一个空项目。这是我不曾欣赏的。起初我认为这是奇怪的行为,但我认为它使用户能够在脚本运行时动态创建他的项目。但不确定我是否喜欢这样!
因此,在包含项目时,请务必确保导航到设置中的正确目录!不然你可能会像我一样犯规。
| 归档时间: |
|
| 查看次数: |
6029 次 |
| 最近记录: |