我正在使用Micronaut框架来开发项目,而Micronaut CLI会使用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()
}
问题是com.github.johnrengelman.shadow
插件由于某种原因无法与Jenkins配合使用,我怀疑它在我们的公司存储库中不可用(并且无法添加)。虽然我可以使用jar
插件的java
任务创建可执行文件fat-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 "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) }
}
}
主要问题是为什么com.github.johnrengelman.shadow
插件不能与公司存储库一起使用?
答案 0 :(得分:0)
已解决
问题是插件{...}块无法访问私有/公司存储库。
通过将插件定义从plugins{...}
恢复为旧的定义方式apply plugin...
添加了应用插件的较旧方法(这是使其与私有存储库一起使用的唯一方法)-
apply plugin: "com.github.johnrengelman.shadow"
已删除(无法访问私人/公司存储库)-
plugins {
id "com.github.johnrengelman.shadow"
}
有关更多信息,请查看此SO question中的第一条评论。
答案 1 :(得分:-1)
您可以通过一种方法来解决这种令人烦恼的情况。
您可以从GitHub下载shadow jar plugin源代码,并将其添加到<project-root-folder>/buildSrc
目录中的Micronaut应用程序存储库中。
您可以按照此指南创建自定义插件https://guides.gradle.org/writing-gradle-plugins
通过这种方法,影子插件位于您的代码库中,您无需下载即可使用它。
最后一个想法。一家不允许您在公司资源库中代理此插件的开源软件的公司,阻碍了您的工作。您可能想和您的经理谈谈。
我描述的解决方法很可怕,因为
祝你好运。希望这会有所帮助。