Java 如何使用Quarkus Gradle插件构建uberJar
我正在尝试使用Quarkus Gradle插件构建一个具有所有可运行依赖项的uberJar。 使用maven,您可以通过向插件添加配置来构建它 这就是maven中的情况:Java 如何使用Quarkus Gradle插件构建uberJar,java,gradle-plugin,quarkus,Java,Gradle Plugin,Quarkus,我正在尝试使用Quarkus Gradle插件构建一个具有所有可运行依赖项的uberJar。 使用maven,您可以通过向插件添加配置来构建它 这就是maven中的情况: <plugin> <groupId>io.quarkus</groupId> <artifactId>quarkus-maven-plugin</artifactId> <version>${quarkus.version}<
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.version}</version>
<configuration>
<uberJar>true</uberJar>
</configuration>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
是否有可能在gradle插件中设置此属性?
id“io.quarkus.gradle.plugin”版本“0.12.0”quarkusBuild任务包含一个名为uberJar的属性,您可以使用该属性控制uberJar行为,请参见。该选项的名称为uber jar。 要设置此属性,必须像从命令行启动生成一样:
>gradle quarkusBuild --uber-jar
我在构建过程中遇到了一些bug,比如那个
Caused by: java.nio.file.NoSuchFileException: /Users/sven/Idea/getting-started/build/getting-started.jar
但是最终构建成功了您可以在build.gradle中直接配置任务,方法如下:
task buildUberJar(type: io.quarkus.gradle.tasks.QuarkusBuild, dependsOn: build) {
uberJar = true
}
然而,我发现使用这种方法的jar之间存在很多资源重叠的问题。以下是我的输出的子集:
> Task :service-asset-management:buildUberJar
building quarkus runner
Duplicate entry META-INF/quarkus-extension.json entry from io.quarkus:quarkus-jackson::jar:0.26.1(runtime) will be ignored. Existing file was provided by io.quarkus:quarkus-kubernetes-client::jar:0.26.1(runtime)
Duplicate entry NOTICE entry from org.apache.kafka:kafka-clients::jar:2.2.1(runtime) will be ignored. Existing file was provided by org.ehcache:ehcache::jar:3.6.1(runtime)
Duplicate entry META-INF/quarkus-extension.json entry from io.quarkus:quarkus-arc::jar:0.26.1(runtime) will be ignored. Existing file was provided by io.quarkus:quarkus-kubernetes-client::jar:0.26.1(runtime)
Duplicate entry META-INF/quarkus-extension.json entry from io.quarkus:quarkus-core::jar:0.26.1(runtime) will be ignored. Existing file was provided by io.quarkus:quarkus-kubernetes-client::jar:0.26.1(runtime)
Dependencies with duplicate files detected. The dependencies [org.apache.kafka:kafka-clients::jar:2.2.1(runtime), org.ehcache:ehcache::jar:3.6.1(runtime)] contain duplicate files, e.g. NOTICE
Dependencies with duplicate files detected. The dependencies [io.quarkus:quarkus-core::jar:0.26.1(runtime), io.quarkus:quarkus-jackson::jar:0.26.1(runtime), io.quarkus:quarkus-kubernetes-client::jar:0.26.1(runtime), io.quarkus:quarkus-arc::jar:0.26.1(runtime)] contain duplicate files, e.g. META-INF/quarkus-extension.json
Dependencies with duplicate files detected. The dependencies [commons-logging:commons-logging::jar:1.2(runtime), org.slf4j:jcl-over-slf4j::jar:1.7.25(runtime)] contain duplicate files, e.g. org/apache/commons/logging/impl/SimpleLog$1.class
我可以在命令行上使用此属性吗?像gradle quarkusbuild-uberJar?您应该能够通过使用-uberJar=truegradle quarkusbuild-uberJar=true*激活它。错误:配置任务时出现问题:从命令行配置quarkusbuild。>未知的命令行选项'-uberJar'。我不是gradle专家,因此我需要进一步了解正确的语法。gradle支持在0.12.0之后有很多变化,因此我建议要么从master构建,要么在几天后等待0.13.0,看看是否仍然存在相同的问题