92

我打算在我的项目中推广 gradle 的使用,并希望在任何地方重用相同的构建文件。不幸的是,我很难在单个文件中定义 $subject 中提到的属性,以简化迁移。

这是gradle 1.6。

我尝试过的所有尝试都失败了:

  • gradle.properties: 不能修改名称(只读,必须使用 asettings.gradle并覆盖项目名称!);{source,target}Compatibility不予考虑;
  • settings.gradle:{source,target}Compatibility也不考虑!

那么,实现这一目标的正确方法是什么?到目前为止我已经尝试过gradle.properties

group = something
name = whatever  # cannot do!
version = whatever
sourceCompatibility = whatever # not taken into account!

并在settings.gradle

sourceCompatibility = "whatever";  # not taken into account!

编辑好吧,“名称”问题无法解决;其余的,我使用了我在构建文件中应用的另一个文件。“名称”处理确实不正确:/

编辑 2现在是 2014 年和 gradle 1.12,问题仍然没有解决......

4

5 回答 5

135

gradle.properties:

theGroup=some.group
theName=someName
theVersion=1.0
theSourceCompatibility=1.6

设置.gradle:

rootProject.name = theName

构建.gradle:

apply plugin: "java"

group = theGroup
version = theVersion
sourceCompatibility = theSourceCompatibility
于 2013-06-23T16:52:19.780 回答
27

我找到了类似问题的解决方案。我正在使用 Gradle 1.11(截至 2014 年 4 月)。可以直接在settings.gradle文件中更改项目名称,如下所示:

  rootProject.name='YourNewName'

这负责使用正确的 artifactId 上传到存储库(Artifactory w/它的插件)。

于 2014-03-31T01:41:02.677 回答
20

我设置了工件 baseName 使其独立于构建项目名称,这使我可以实现您想要的:

jar {
    baseName "core"
}

使用此属性集,即使我的项目名称是“foo”,当我运行时gradle install,工件也会以名称core而不是foo.

于 2015-08-20T12:38:15.883 回答
5

settings.gradle显然,使用这样的东西是可能的。

rootProject.name = 'someName'
gradle.rootProject {
    it.sourceCompatibility = '1.7'
}

我最近收到建议,可以通过使用闭包来设置项目属性,该闭包稍后会在项目可用时调用。

于 2017-06-12T12:21:12.740 回答
0

使用带有 Gradle Kotlin DSL 的 buildSrc 在这里查看完整的工作示例:GitHub daggerok/spring-fu-jafu-example buildSrc/src/main/java/Globals.kt

于 2019-05-07T22:46:57.900 回答