【问题标题】:Gradle: getting properties from other projectGradle:从其他项目获取属性
【发布时间】:2014-06-02 02:43:00
【问题描述】:

是否可以在项目A 中定义一个额外的属性并使其在项目B 中可见?根项目显然包括两者。

我尝试将其放入项目 A 的 build.gradle:

ext {
  myProps = 'something to say'
}

这在项目 B 的 build.gradle 中:

task('X', dependsOn: [':A:someTask']){
  println(project('A').myProps)
}

但我明白了:

FAILURE: Build failed with an exception.

...

* What went wrong:
A problem occurred evaluating project ':B'.
> Could not find property 'myProps' on project ':A'.

我怎样才能做到这一点?

【问题讨论】:

    标签: java groovy build gradle


    【解决方案1】:

    可以从任何可以访问拥有对象(在本例中为AProject 对象)的位置访问一个额外的属性。但是,接触兄弟项目的项目模型并不被认为是好的风格。一个原因是这可能需要调整项目的配置顺序,但还有其他原因。相反,最好在公共父项目中声明额外属性,或者在应用于需要访问额外属性的所有项目的脚本插件中。

    PS:同样,应尽可能避免显式的跨项目任务依赖。另请注意,您的任务会尝试在配置阶段(而不是执行阶段)打印额外的属性,这可能是也可能不是您想要的。

    【讨论】:

    • 我明白你的意思。我确实需要配置阶段的属性。如果 ext 属性在一个共同的父级中,我如何访问它们?谢谢!
    • 父项目中声明的额外属性可以通过它们的简单名称访问(例如myProps)。请注意,ext. 仅应在声明额外属性时使用,而不应在使用时使用。
    猜你喜欢
    • 1970-01-01
    • 2013-07-05
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多