Java 使用Gradle 5.x创建Jar和Tar
我正在为一个遗留项目编写一个新的Gradle脚本,该项目正在迁移到它上面 我最初使用Gradle 4.x DSL编写脚本,但我已决定将其升级到5.x,以便更好地进行未来验证 我的一项任务是通过设置jar名称和扩展名来创建jar,并在我的项目根目录的文件夹下创建一个新文件 当我将脚本迁移到gradle 5.X时,以下属性已被弃用: baseName、扩展名、archiveName和destinationDir 我已尝试将这些属性调整为新的约定,但我遇到了无法找到这些属性的问题: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
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
archiveDestinationDirectory
属性。显示正确的属性名为destinationDirectory
要将目录本身包含到tar中,您需要使用,而不是您正在使用的:
from('..') {
include('bin/**')
include('sounds/**')
include('classes/**')
}
- baseName:表明它已被弃用,取而代之的是
archiveBaseName
- 扩展:表明它已被弃用,取而代之的是
archiveExtension
- archiveName:表明它已被弃用,取而代之的是
archiveFileName
- :文档显示,它已被弃用,取而代之的是
destinationDirectory
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,则不会事情已经创建好了。如果我指定了一个目录,一切都正常。理想情况下,我想在根目录下把它吐出来。