gradle - 使用 gradle 构建 Zip 任务,包括选定的依赖项
问题描述
我想在 gradle 中创建包含少量类且仅需要依赖项的 zip/war/jar 工件
我有一个简单的 zip 任务,如下所示:
task myZip(type: Zip) {
from sourceSets.main.output
include 'com/mypackage/*'
archiveName 'myzip.zip'
}
现在我想包含一些编译依赖示例 build.gradle 骨架:
apply plugin : 'java'
apply plugin : 'eclipse'
apply plugin: 'maven-publish'
repositories{
}
configurations
{
}
dependencies
{
compile <dependency1>
compile <dependency2>
compile <dependency3>
...
compile <dependency20>
myzipjar <dependency3>
myzipjar <dependency6>
myzipjar <dependency13>
}
对于我的 zip 任务:
task myZip(type: Zip) {
from sourceSets.main.output
include 'com/mypackage/*'
**into 'lib'
from configurations.myzipjar**
archiveName 'myzip.zip'
}
解决方案
解决方案取决于所需的选择标准。
您可以将其视为可以查询实例Configuration
的常规:FileCollection
File
configurations.compile.findAll
{
it.name.startsWith == "required-prefix" // it is an instance of File
}
...或者您可以使用它的getResolvedConfiguration()
方法通过原始Dependency
实例过滤解析结果:
configurations.compile.resolvedConfiguration.getFiles
{
it.group == "target-group" // it is an instance of Dependency
}
或者,也许您应该考虑使用将包含在compile
配置和您的 zip 任务中的单独配置:
configurations
{
zippableCompile
compile.extendsFrom zippableCompile
}
dependencies
{
zippableCompile <...>
}
PS 该compile
配置自 Gradle 3.4 起已弃用,请implementation
改用。
推荐阅读
- keyboard - 什么物理键映射到键码 108 (VK_SEPARATOR)?
- django - 为什么 SQL 插入 (mariadb) 会随着表的增长而变慢
- flutter - Dart SDK 版本差异
- regex - 正则表达式删除句点,除非在数字之间
- javascript - 如何使用 javascript 将 HTML Treeview 下载为 PDF
- laravel - Laravel echo 只收听公共频道
- mysql - MySQL 从行值生成列
- java - 如何在 Spring Boot 嵌入式 tomcat 中自定义 ssl 配置?
- c# - 用于包含字母数字和特殊字符但不包含特殊字符的正则表达式
- mysql - MySQL查询计算两个坐标之间的距离,但HAVING子句太慢