我打算将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,问题仍未解决......
答案 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