如何在我的gradle项目中创建单个可执行的jar?

问题描述 投票:1回答:2

我在应用中使用gradle 6.2版本和jdk 8,在buildlibs目录下编译了两个jar文件。我如何在我的应用程序中创建一个可执行的jar文件?

我的 build.gradle,

plugins {
  id 'com.google.cloud.tools.jib' version '2.2.0'
  id 'application'
  id 'java'
}

repositories {
    mavenLocal()
    mavenCentral()
    jcenter()
}

jib.to.image = 'gcr.io/' + project.property('gcpProjectId') + '/my-application'
jib.container.creationTime = 'USE_CURRENT_TIMESTAMP'

mainClassName = "com.foo.Myapplication"

jar {
  manifest { 
    attributes "Main-Class": "$mainClassName"
  }  

  from {
    configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
  }
}

创建了Jar文件,为什么在执行 "gradle clean build "的时候会创建-all.jar?

ls -ltr build/libs/
total 31184
-rw-r--r-- 1  user 15986229 Jun  9 20:22 my-application-1.0.0.jar
-rw-r--r-- 1  user 15942345 Jun  9 20:22 my-application-1.0.0-all.jar

为什么在执行 "gradle clean build "的时候会创建-all.jar?

java gradle build.gradle executable-jar
2个回答
1
投票

Gradle Shadow Plugin 似乎正是你所需要的。它与Gradle的 application 插件 .


0
投票

我能够建立一个单一的jar,修改后的build.gradle喜欢以下。

build.gradle。

plugins {
  id 'com.google.cloud.tools.jib' version '2.2.0'
}

repositories {
    mavenLocal()
    mavenCentral()
    jcenter()
}

jib.to.image = 'gcr.io/' + project.property('gcpProjectId') + '/my-application'
jib.container.creationTime = 'USE_CURRENT_TIMESTAMP'

jar {
  manifest { 
    attributes 'Main-Class': 'com.foo.Myapplication'
  }  

  from {
    configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.