java - Exec 任务的动态 gradle 命令失败

标签 java gradle aws-lambda

我正在尝试将 Lambda zip 文件发布到 s3- s3://my-aws-lambda/<projectName>/[release|SNAPSHOT]/ 。下面定义的任务,publishToS3失败并显示消息

Caused by: java.io.FileNotFoundException: /Users/me/my-lambda/build/distributions

当我运行时

./gradlew clean build -x test -x release

感谢任何帮助。谢谢。

task buildZip(type: Zip) {
    from compileJava
    from processResources
    into('lib') {
        from configurations.runtimeClasspath
    }
}

task publishToS3(type: Exec, dependsOn: buildZip) {
    onlyIf { file("${project.buildDir}/distributions").exist() }

    def artifacts = new FileNameByRegexFinder().getFileNames("${project.buildDir}/distributions", /.*\.zip/)
    assert artifacts.size() == 1

    def isSnapShot = artifacts[0].endsWith('-SNAPSHOT.zip')

    def releaseCmd = ("aws s3 cp " +
            "${artifacts[0]} " +
            "s3://my-aws-lambdas/${project.name}/${isSnapShot ? 'SNAPSHOT' : 'release'}/ ").trim().tokenize(' ') as List

    workingDir "${project.buildDir}/distributions"

    commandLine releaseCmd
}

build.dependsOn buildZip

最佳答案

如果您使用的是 UNIX 环境,则可以使用 find 命令来搜索文件并使用其输出。

task scanFiles() {
    def a= "find ${project.buildDir} -name *.zip".execute().text
    String[] files=a.split('\n')
    if(files.length == 1){
        println("We'v got a file :"+a)
    }
    else if(files.length ==0){
        println("We've not no files ")
    }
    else{
        println("We've got multiple files\n"+a)
    }
}

关于java - Exec 任务的动态 gradle 命令失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60351608/

相关文章:

java - Google App Engine Java 未收到电子邮件

java - 输入文件第一行时Java中的NumberFomatException错误

gradle - build Gradle项目的问题

Android Studio 构建失败 - 任务 :app:dexBuilderDebug FAILED

java - AWS Lambda/JNI - 尝试使其与嵌入式 native 文件一起使用

python - 如何自动化 AWS s3 存储桶对象的权限

java - HIbernate注解@GeneratedValue策略类型的区别

java - 如何在 iTextPDF 中对齐图形?

maven - 具有 “outgoing”依赖关系的Maven中央jar

amazon-web-services - 使用无服务器框架的 Cognito 用户池授权器