zip文件太大aws lambda java gradle

zip文件太大aws lambda java gradle,java,amazon-web-services,gradle,aws-lambda,Java,Amazon Web Services,Gradle,Aws Lambda,我想在aws lambda上部署我的java函数 我拿了这个文件 这是我的build.gradle文件 所以我运行gradle buildZip来构建我的zip,我的aws类实现RequestHandler,它位于src/main/java/AWSHandler.java中 一旦命令成功结束,我有一个710MB的zip文件,这是巨大的!!! 当我解压缩文件时,我可以看到有许多lib支持许多操作系统 这个文档似乎是在AmazonLinux上运行java8函数 所以我可以清理我的拉链,只得到这个操作

我想在aws lambda上部署我的java函数

我拿了这个文件

这是我的build.gradle文件

所以我运行gradle buildZip来构建我的zip,我的aws类实现RequestHandler,它位于src/main/java/AWSHandler.java中

一旦命令成功结束,我有一个710MB的zip文件,这是巨大的!!! 当我解压缩文件时,我可以看到有许多lib支持许多操作系统

这个文档似乎是在AmazonLinux上运行java8函数

所以我可以清理我的拉链,只得到这个操作系统

我可以用gradle来完成吗?或者我应该创建一个额外的脚本来清理我的文件吗?

Zip任务类型的into方法可以接受CopySpec,您可以使用它来添加排除:


有关更多详细信息,请参阅Javadoc:

我们可以减少依赖项的数量,如下所述:
plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.61'
}

group 'com.xxx'
version '1.0'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    implementation "org.jetbrains:annotations:16.0.2"
    implementation 'com.amazonaws:aws-lambda-java-core:1.2.0'
    implementation 'com.amazonaws:aws-lambda-java-events:2.2.7'
    implementation 'com.google.code.gson:gson:2.8.6'

    compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.5.2'

    runtimeOnly 'com.amazonaws:aws-lambda-java-log4j2:1.1.0'

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

jar {
    manifest {
        attributes 'Main-Class': 'Main'
    }
}

task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example',
                'Implementation-Version': archiveVersion,
                'Main-Class': 'Main'
    }
    baseName = project.name + '-all'
    from sourceSets.main.output

    dependsOn configurations.runtimeClasspath
    from {
        configurations.runtimeClasspath.findAll { it.name.endsWith('jar') }.collect { zipTree(it) }
    }
    with jar
}

task buildZip(type: Zip) {
    manifest {
        attributes (
                'Implementation-Title': 'AWS Handler',
                'Implementation-Version': archiveVersion,
                'Main-Class': 'AWSHandler'
        )
    }

    from compileJava
    from processResources
    into('lib') {
        from configurations.runtimeClasspath
    }
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

into('lib') {
    from configurations.runtimeClasspath
    exclude("**windows**") // example, untested.
}