gradle:如何设置项目名称/组/版本,加上{source,target}兼容性在同一个文件中?

我打算概括为我的项目使用gradle,并希望在任何地方重复使用相同的构build文件。 不幸的是,我试图在一个文件中定义$ 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! 

并在settings.gradle

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

编辑好了,“名字”问题根本无法解决; 其余的,我用另一个文件,我在构build文件中应用。 “名称”处理真的是不正确的:/

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

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 

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

  rootProject.name='YourNewName' 

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

我设置了工件baseName,所以它独立于构build项目名称,这使我可以实现你想要的:

 jar { baseName "core" } 

有了这个属性集,即使我的项目名称是“foo”,当我运行gradle install ,工件也会以名字core而不是foo

显然这将是可能的settings.gradle像这样的东西。

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

我最近得到的build议是,如果设置属性被延迟到通过使用闭包可用的项目时,可以设置项目属性。