![](/img/trans.png)
[英]Java Gradle: How to include external jars using java-plugin jar task?
[英]How to include local jars into a fat jar using Gradle 6.3?
在运行 Java 8 和 Gradle 6.3 的 Linux 机器上,我需要构建一个由混合库组成的胖 jar,一些来自 Maven Central,其他来自位于我的存储库根目录的本地libs
目录,以及我的build.gradle
和gradlew
:
apply plugin: 'java'
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
task copyLibs(type: Copy) {
from configurations.compile
into 'libs'
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation "junit:junit:4.12"
}
运行./gradlew clean build
和cd build/libs
,如果我unzip myproject.jar
我可以看到 jar 中没有包含任何依赖项。
我的最终目标是使我的项目可执行为java -jar myproject.jar
。 我该如何解决这个问题?
解压 jar 文件后,请在此处检查所有依赖项。
Your-Project --> BOOT-INF --> libs
by default, if your Gradle build is successful the jar files come here.
然后你可以运行 java -jar 。
这是一个build.gradle
,它生成一个包含本地依赖项的胖 jar:
plugins {
id 'java'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
group 'com.mycompany.foo'
version '1.0'
jar {
archiveBaseName = 'myjarname'
archiveVersion = '0.1.0'
manifest {
attributes(
'Main-Class': 'com.mycompany.foo.Main'
)
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
repositories {
mavenCentral()
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation'org.junit.jupiter:junit-jupiter-api:5.7.2'
testImplementation 'org.assertj:assertj-core:3.20.2'
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.