在Maven中,我们可以使用分类器生成工件 . 为了让Gradle下载一个带分类器的特定文件,我定义了一个名为zipConfig的新配置,并按如下方式声明了依赖关系:
configurations {
zipConfig
}
dependencies {
...
zipConfig group:'', name:, version:, ext:'zip', classifier:'config'
}
要解压缩文件's files and copy them into my package I defined a task that unzip'文件并将其中的文件复制到build / resources文件夹中 .
task unzipConfig(type: Copy) {
def sdkServerPattern = ".*" + sdkServer + ".*config.*"
def pattern = ~/$sdkServerPattern/
def configZipTree = zipTree(configurations.zipConfig.filter{it.name.matches(pattern)}.singleFile)
from configZipTree
include '**/*filename1'
include '**/*filename2'
into(project.buildDir.path + '/resources')
}
在项目的"pack"任务中(所有内容都打包到.tar.gz文件中),参考资源文件夹中的文件将被打包在一起 .
task pack(type: Tar, dependsOn: unzipConfig) {
dependsOn build
compression = Compression.GZIP
extension = 'tar.gz'
from(configurations.runtime.allArtifacts.files) {
into('/lib')
}
from(configurations.runtime) {
into('/lib')
}
def sdkConfigFolderName = 'build/resources/' + sdkServer + '-' + sdkServerVersion + '/config/'
from sdkConfigFolderName + 'filename1'
from sdkConfigFolderName + 'filename2'
baseName = project.name + '-distribution'
}