Java 如何创建Micronaut';没有阴影插件的胖罐子?
一开始,Micronaut与企业回购协议(corporate repo)合作建立一个新项目时遇到了一个障碍,现在,人们对嵌入式服务器如何引导的好奇更多了。我有一个CLI生成的项目,带有Java 如何创建Micronaut';没有阴影插件的胖罐子?,java,gradle,netty,micronaut,gradle-shadow-plugin,Java,Gradle,Netty,Micronaut,Gradle Shadow Plugin,一开始,Micronaut与企业回购协议(corporate repo)合作建立一个新项目时遇到了一个障碍,现在,人们对嵌入式服务器如何引导的好奇更多了。我有一个CLI生成的项目,带有com.github.johnrengelman.shadowgradle插件,当我使用- $ java -Dmicronaut.environments=E1 -jar build/appBundle/app.jar build.gradle- plugins { id "com.github.johnre
com.github.johnrengelman.shadow
gradle插件,当我使用-
$ java -Dmicronaut.environments=E1 -jar build/appBundle/app.jar
build.gradle-
plugins {
id "com.github.johnrengelman.shadow" version "5.0.0"
}
...
shadowJar {
mergeServiceFiles()
}
plugins {
id "java"
}
...
jar {
manifest {
attributes "Main-Class": "axp.payments.pci.dss.PaymentsPciDssDispatcher"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
当我用jar
task和java
plugin替换shadow
plugin/task时,我能够创建一个可执行的胖jar,但它失败了,出现了以下错误-
$ java -Dmicronaut.environments=E1 -jar build/appBundle/app.jar
16:12:22.662 [main] INFO i.m.context.env.DefaultEnvironment - Established active environments: [E1]
16:12:22.863 [main] INFO io.micronaut.runtime.Micronaut - No embedded container found. Running as CLI application
build.gradle-
plugins {
id "com.github.johnrengelman.shadow" version "5.0.0"
}
...
shadowJar {
mergeServiceFiles()
}
plugins {
id "java"
}
...
jar {
manifest {
attributes "Main-Class": "axp.payments.pci.dss.PaymentsPciDssDispatcher"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
fat jar
,而不使用com.github.johnrengelman.shadow
gradle插件这不正是创建胖罐子的插件吗?因此,如果没有创建胖jar的插件,您必须在Gradle内部以艰难而丑陋的方式(使用正确的清单、覆盖类的逻辑等为自己构建一个jar)来创建胖jar。更重要的是,将所有提取的LIB放在JAR中。这个问题实际上与Micronaut无关。您应该解释您不使用shadow插件的原因,否则它就没有意义了。@Serverfrog是的,
shadow jar
可以与micronaut配合使用。创建胖jar的另一种方法是在gradle中使用java
插件的jar
任务。如果你读了整个问题,上面就提到了。我试图理解为什么后者不适用于micronaut,而适用于简单的java应用程序。@JamesKleeh是的,这可能不是micronaut的问题。我试图理解为什么jar
任务的java
gradle插件不适用于micronaut,而它适用于一个简单的java应用程序。shadow jar将您的代码和依赖项合并到一个jar中。如果您只是使用jar,那么在通过java-jar运行应用程序时,必须将依赖项添加到类路径中