Java 将shadow插件生成的shadow jar重命名为原始工件名称

Java 将shadow插件生成的shadow jar重命名为原始工件名称,java,gradle,shadow,Java,Gradle,Shadow,我正在使用gradle shadow插件构建我的uber jar build.grade文件如下所示: buildscript { repositories { jcenter() } dependencies { classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2' } } apply plugin: 'com.github.johnrengelman.shad

我正在使用gradle shadow插件构建我的uber jar

build.grade文件如下所示:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
    }
}

apply plugin: 'com.github.johnrengelman.shadow'


dependencies {
   compile "com.amazonaws:aws-lambda-java-events:1.3.0"

}

assemble.dependsOn(shadowJar)
它在build/libs文件夹中生成以下jar

myProject-1.0.0-SNAPSHOT.jar
myProject-1.0.0-SNAPSHOT-all.jar '//uber jar

我想用uber jar替换原来的jar。我该怎么做呢?

也许在
build.gradle
中禁用jar任务会起作用

apply plugin: 'java'
jar.enabled = false

因此,您将只拥有您的uber jar。

不清楚为什么要这样做,但我假设您的意思是“使用原始jar的名称”。你应该做两件事:

  • jar
    任务(或
    archiveName
    ,或影响名称的其他属性)指定不同的Classifier,或禁用它,这样您就不会在每次生成时不断覆盖它,避免做不必要的工作
  • shadowJar
    任务上更改分类器
  • 扩展自Gradle内置任务,因此其中的大多数配置选项适用于
    ShadowJar
    任务

    tasks.jar.configure{
    分类器='default'
    }
    tasks.shadowJar.configure{
    分类器=null
    }
    
    您可以这样做:

    // save the old jar task
    def oldJarTask = tasks.jar
    
    // remove the original jar tasks from the tasks list
    tasks.remove(jar)
    
    // create a new task named "jar" thats depends on shadowJar
    // when you will run jar task it will be actually run the shadow jar
    task jar(dependsOn:[shadowJar])
    
    // create a task to run the plain old good jar task from gradle :)
    task oldJar(dependsOn: oldJarTask)
    

    这是测试和工作,希望它能帮助你

    以最少的击键次数,而不会造成任何障碍

    更换线路:

    assemble.dependsOn(shadowJar)
    
    与:

    核实:

    jar {
        enabled = false
        dependsOn(shadowJar { classifier = null })
    }
    
    $ gradle assemble --console=plain
    :compileJava
    :processResources NO-SOURCE
    :classes
    :shadowJar
    :jar SKIPPED
    :assemble UP-TO-DATE