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

时间:2013-06-23 16:31:24

标签: java gradle

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

这是gradle 1.6。

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

  • gradle.properties:无法修改名称(只读,必须使用settings.gradle并覆盖 root 项目名称!); {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,问题仍未解决......

5 个答案:

答案 0 :(得分:115)

gradle.properties:

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

settings.gradle:

rootProject.name = theName

的build.gradle:

apply plugin: "java"

group = theGroup
version = theVersion
sourceCompatibility = theSourceCompatibility

答案 1 :(得分:20)

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

  rootProject.name='YourNewName'

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

答案 2 :(得分:20)

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

#!/bin/bash
read -sp "Enter a password:" PASS
wget www.example.com && sudo -S <<< $PASS shutdown -P 5

设置此属性后,即使我的项目名称为“foo”,当我运行jar { baseName "core" } 时,也会使用名称gradle install而不是core发布工件。

答案 3 :(得分:3)

显然,settings.gradle可能会出现这种情况。

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

我最近收到的建议是,可以使用一个闭包设置一个项目属性,该闭包将在项目可用时稍后调用。

答案 4 :(得分:0)

将buildSrc与Gradle Kotlin DSL一起使用 查看完整的示例here: GitHub daggerok/spring-fu-jafu-example buildSrc/src/main/java/Globals.kt