Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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 使用Gradle 5.x创建Jar和Tar_Java_Gradle_Build - Fatal编程技术网

Java 使用Gradle 5.x创建Jar和Tar

Java 使用Gradle 5.x创建Jar和Tar,java,gradle,build,Java,Gradle,Build,我正在为一个遗留项目编写一个新的Gradle脚本,该项目正在迁移到它上面 我最初使用Gradle 4.x DSL编写脚本,但我已决定将其升级到5.x,以便更好地进行未来验证 我的一项任务是通过设置jar名称和扩展名来创建jar,并在我的项目根目录的文件夹下创建一个新文件 当我将脚本迁移到gradle 5.X时,以下属性已被弃用: baseName、扩展名、archiveName和destinationDir 我已尝试将这些属性调整为新的约定,但我遇到了无法找到这些属性的问题: Could not

我正在为一个遗留项目编写一个新的Gradle脚本,该项目正在迁移到它上面

我最初使用Gradle 4.x DSL编写脚本,但我已决定将其升级到5.x,以便更好地进行未来验证

我的一项任务是通过设置jar名称和扩展名来创建jar,并在我的项目根目录的文件夹下创建一个新文件

当我将脚本迁移到gradle 5.X时,以下属性已被弃用:

baseName、扩展名、archiveName和destinationDir

我已尝试将这些属性调整为新的约定,但我遇到了无法找到这些属性的问题:

Could not set unknown property 'archiveDestinationDirectory' for task ':jar' of type org.gradle.api.tasks.bundling.Jar."
我已经尝试在网上找到解决方案,但是我还没有找到一个合适的方法或者一个使用Gradle5.x的例子

现在,第二个问题围绕着创建tar的概念。我也没有找到好的例子来说明这一点。到目前为止,我的脚本执行此操作,这将创建tar,但不会保留正确的文件层次结构:

task createTar(type: Tar) {
    archiveBaseName = 'info_tar'
    archiveExtension = 'gz'
    compression = Compression.GZIP
    from ('..') {
        include('bin/**')
        include('sounds/**')
        include('classes/**')
    }
    archiveFileName = archiveBaseName.get() + '.' + archiveExtension.get()
    //cleanup of temporary directories
    delete BIN_TARGET, SOUNDS_TARGET, CLASSES_TARGET
}
我的目标是生成一个包含文件夹bin、sounds和class的tar。有人能帮上忙吗?

  • baseName:表明它已被弃用,取而代之的是
    archiveBaseName
  • 扩展:表明它已被弃用,取而代之的是
    archiveExtension
  • archiveName:表明它已被弃用,取而代之的是
    archiveFileName
  • :文档显示,它已被弃用,取而代之的是
    destinationDirectory
Jar中没有
archiveDestinationDirectory
属性。显示正确的属性名为
destinationDirectory

要将目录本身包含到tar中,您需要使用,而不是您正在使用的:

from('..') {
  include('bin/**')
  include('sounds/**')
  include('classes/**')
}
  • baseName:表明它已被弃用,取而代之的是
    archiveBaseName
  • 扩展:表明它已被弃用,取而代之的是
    archiveExtension
  • archiveName:表明它已被弃用,取而代之的是
    archiveFileName
  • :文档显示,它已被弃用,取而代之的是
    destinationDirectory
Jar中没有
archiveDestinationDirectory
属性。显示正确的属性名为
destinationDirectory

要将目录本身包含到tar中,您需要使用,而不是您正在使用的:

from('..') {
  include('bin/**')
  include('sounds/**')
  include('classes/**')
}

是的,我已经阅读了文档,即使我尝试使用建议的替换,我仍然会遇到错误。例如,当我尝试创建一个具有自定义命名约定的jar时,如:
archiveFileName=archiveBaseName+'.+archiveExtension
我仍然会遇到以下错误
没有方法签名:org.gradle.api.internal.provider.DefaultPropertyState.plus()适用于参数类型:(字符串)值:[.]可能的解决方案:value(java.lang.Object)、is(java.lang.Object)、use([Ljava.lang.Object;)、split(groovy.lang.Closure)、wait()、get()
,这是因为属性不是String类型。它们是Property类型?使用archiveBaseName.get()+'。+archiveExtension.get()好的,非常感谢。我让jar正常工作,但我的createTar任务仍然没有做任何事情(更新了原始问题).使用--info找出它为什么不起作用。我猜目录不在“..”中,并且没有什么东西可以放入tar文件中。事实上就是这样。我纠正了这些问题,它工作得很好。唯一需要考虑的是如何在项目的根目录下创建tarball。如果不将任何内容设置为destinationDirectory,则不会事情已经创建好了。如果我指定了一个目录,一切都可以正常工作。理想情况下,我希望在根目录下输出它。是的,我已经阅读了文档,即使我尝试使用建议的替换,我仍然会出错。例如,当我尝试创建一个具有自定义命名约定的jar时,如:
archiveFileName=archiveBaseName+'.+archiveExtension
我仍然得到以下错误
没有方法签名:org.gradle.api.internal.provider.DefaultPropertyState.plus()适用于参数类型:(字符串)值:[.]可能的解决方案:value(java.lang.Object)、is(java.lang.Object)、use([Ljava.lang.Object;”)、split(groovy.lang.Closure)、wait()、get()
这是因为属性不是String类型。它们是Property类型?使用archiveBaseName.get()+'.+archiveExtension.get()。好的,非常感谢。我让jar正常工作,但我的createTar任务仍然没有做任何事情(更新了原始问题).使用--info找出它为什么不起作用。我猜目录不在“..”中,并且没有什么东西可以放入tar文件中。事实上就是这样。我纠正了这些问题,它工作得很好。唯一需要考虑的是如何在项目的根目录下创建tarball。如果不将任何内容设置为destinationDirectory,则不会事情已经创建好了。如果我指定了一个目录,一切都正常。理想情况下,我想在根目录下把它吐出来。