Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在同一文件中设置项目名称/组/版本以及{source,target}兼容性?_Java_Gradle - Fatal编程技术网

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

Java 如何在同一文件中设置项目名称/组/版本以及{source,target}兼容性?,java,gradle,Java,Gradle,我打算在我的项目中推广gradle的使用,并希望在任何地方重用相同的构建文件。不幸的是,为了简化迁移,我很难在单个文件中定义$subject中提到的属性 这是gradle 1.6 我尝试过的,但都失败了: gradle.properties:无法修改名称(只读,必须使用settings.gradle并覆盖根项目名称!){source,target}兼容性未考虑在内 settings.gradle:{source,target}兼容性也未考虑在内 那么,实现这一目标的正确方法是什么?到目前为止

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

这是gradle 1.6

我尝试过的,但都失败了:

  • gradle.properties
    :无法修改名称(只读,必须使用
    settings.gradle
    并覆盖根项目名称!)<代码>{source,target}兼容性未考虑在内
  • settings.gradle
    {source,target}兼容性也未考虑在内
    
那么,实现这一目标的正确方法是什么?到目前为止我在
gradle.properties
中尝试的内容:

group = something
name = whatever  # cannot do!
version = whatever
sourceCompatibility = whatever # not taken into account!
和在
设置中.gradle

sourceCompatibility = "whatever";  # not taken into account!
编辑嗯,“名字”问题就是解决不了;对于其余部分,我使用了另一个我在构建文件中应用的文件。“名称”处理方式确实不正确:/

编辑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

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

  rootProject.name='YourNewName'

这将负责使用正确的artifactId上传到存储库(Artifactory w/its plugin for me)

我设置了artifact baseName,因此它独立于构建项目名称,这允许我实现您想要的:

jar {
    baseName "core"
}

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

显然,在
settings.gradle
中,这样做是可能的

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

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

将buildSrc与Gradle Kotlin DSL一起使用
请参阅完整的工作示例

,是否希望跨构建重用?您可以从:“other.gradle”
从以下位置应用:http://my.server.com/other.gradle“
。请注意,后者当前未被缓存。要获得缓存,您必须编写一个二进制插件;然而,这并不能解决名称问题:(我认为在最新的Gradle中,您也可以在
settings.Gradle
中应用插件。然而,在不同版本中使用插件设置相同的项目名称似乎有点奇怪。请注意,也可以从用户主页中的
init.Gradle
设置所有这些属性(请参阅用户指南)。您不必在gradle.properties中定义变量并在settings.gradle中使用。您只需在settings.gradle rootProject.name=“someName”中提及即可。请确保在settings.gradle.FYI中用双引号指定它,无法在build.gradle文件中自定义项目名称目前是一个改进请求:。此解决方案不太适合多项目生成。@asandroq,由于您只能有一个设置文件,因此必须从该文件重命名子模块。它是中心,但它是有效的。不帮助所有其他将使用项目名称的任务,并且可能会对冲突的名称造成额外的混淆。。。