java - Gradle 清理并复制 JAR 文件

标签 java gradle shadowjar

我正在使用 Gradle 构建一个 Java 应用程序,我想将最终的 jar 文件传输到另一个文件夹中。我想在每个 build 上复制文件并在每个 clean 上删除文件。

不幸的是,我只能完成其中一项任务,而不能同时完成两项任务。当我激活任务 copyJar 时,它成功地复制了 JAR。当我包含 clean 任务时,JAR 不会被复制,如果那里有文件,它会被删除。就好像有一些任务调用clean

有什么解决办法吗?

plugins {
    id 'java'
    id 'base'
    id 'com.github.johnrengelman.shadow' version '2.0.2'
}
dependencies {
    compile project(":core")
    compile project("fs-api-reader")
    compile project(":common")
}

task copyJar(type: Copy) {
    copy {
        from "build/libs/${rootProject.name}.jar"
        into "myApp-app"
    }
}

clean {
    file("myApp-app/${rootProject.name}.jar").delete()
}

copyJar.dependsOn(build)

allprojects {
    apply plugin: 'java'
    apply plugin: 'base'

    repositories {
        mavenCentral()
    }

    dependencies {
        testCompile 'junit:junit:4.12'
        compile 'org.slf4j:slf4j-api:1.7.12'
        testCompile group: 'ch.qos.logback', name: 'logback-classic', version: '0.9.26'
    }

    sourceSets {
        test {
            java.srcDir 'src/test/java'
        }
        integration {
            java.srcDir 'src/test/integration/java'
            resources.srcDir 'src/test/resources'
            compileClasspath += main.output + test.output
            runtimeClasspath += main.output + test.output
        }
    }

    configurations {
        integrationCompile.extendsFrom testCompile
        integrationRuntime.extendsFrom testRuntime
    }

    task integration(type: Test, description: 'Runs the integration tests.', group: 'Verification') {
        testClassesDirs = sourceSets.integration.output.classesDirs
        classpath = sourceSets.integration.runtimeClasspath
    }
    test {
        reports.html.enabled = true
    }
    clean {
        file('out').deleteDir()    
    }

}

最佳答案

clean {
    file("myApp-app/${rootProject.name}.jar").delete()
}

这样每次都会删除评估文件,这不是你想要的。将其更改为:

clean {
    delete "myApp-app/${rootProject.name}.jar"
}

这会配置清理任务并添加要在执行时删除的 JAR。

关于java - Gradle 清理并复制 JAR 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413227/

相关文章:

java - 为移动正方形设置边框

java - Spring Boot入门404错误

android studio 无法解析导入 org.json.JSONObject

java - 使用 Shadow 重定位的包中的 Kotlin 属性不起作用

gradle - 如何在Gradle中将Launch4J与混淆的jar一起使用

java - Android FileOutputStream 不创建文件

java - Spring MVC中如何设置默认值来获取数组参数

java - 如何在抛出异常时回滚 Spring Transaction

Android Studio 不支持的 Gradle 插件版本

gradle - 无法在 Intellij 中导入 Gradle 的 ShadowJar 插件