如何在同一文件中设置项目名称/组/版本以及{source,target}兼容性?

fge*_*fge 79 java gradle

我打算将gradle的使用概括为我的项目,并希望在任何地方重用相同的构建文件.不幸的是,我在单个文件中尝试定义$ subject中提到的属性时遇到了麻烦,以便简化迁移.

这是gradle 1.6.

我尝试了什么,在所有尝试中都失败了:

  • gradle.properties:无法修改名称(只读,必须使用settings.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!
Run Code Online (Sandbox Code Playgroud)

并在settings.gradle:

sourceCompatibility = "whatever";  # not taken into account!
Run Code Online (Sandbox Code Playgroud)

编辑嗯,"名称"问题无法解决; 对于其余的,我使用了另一个我在构建文件中应用的文件."名称"处理真的不对:/

编辑2这是2014年和gradle 1.12,问题仍未解决......

Pet*_*ser 121

gradle.properties:

theGroup=some.group
theName=someName
theVersion=1.0
theSourceCompatibility=1.6
Run Code Online (Sandbox Code Playgroud)

settings.gradle:

rootProject.name = theName
Run Code Online (Sandbox Code Playgroud)

的build.gradle:

apply plugin: "java"

group = theGroup
version = theVersion
sourceCompatibility = theSourceCompatibility
Run Code Online (Sandbox Code Playgroud)


zgg*_*ame 22

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

  rootProject.name='YourNewName'
Run Code Online (Sandbox Code Playgroud)

这需要使用正确的artifactId上传到存储库(Artifactory w/its plugin for me).

  • 对于多项目构建,此解决方案并不理想。 (2认同)

Jef*_*eff 19

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

jar {
    baseName "core"
}
Run Code Online (Sandbox Code Playgroud)

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

  • 对使用项目名称的所有其他任务没有帮助,并且可能会对冲突的名称造成额外的混淆...... (2认同)

Eer*_*nen 6

settings.gradle显然,这样的事情是可能的。

rootProject.name = 'someName'
gradle.rootProject {
    it.sourceCompatibility = '1.7'
}
Run Code Online (Sandbox Code Playgroud)

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