问题标签 [uberjar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven - 骆驼:类型转换器如何加载?
通过mvn compile exec:java
它运行我的应用程序时说:
运行时java -jar
(使用 uberjar 制作maven-shade-plugin
)它说:
检查差异(199 比 182)。结果,我的代码在某些情况下无法按预期工作。
使用骆驼2.16.1
。如果需要完整的依赖项列表,请告诉我,我会更新。
更新 1 通过添加解决
到我的maven-shade-plugin
配置。
jenkins - 在詹金斯中使用 gradle 构建 uberjar 失败
嗨,我正在使用 gradle 创建一个胖罐。它在我的本地机器上正常工作,但在从 Jenkins 运行时失败。
我本地的 gradle 版本是:GradleVersion.current().getVersion()=2.2.1 Jenkins 中的那个:GradleVersion.current().getVersion()=2.4
build.gradle 看起来像
有什么关于gradle版本的吗?
我只是运行任务:clean uberjar
java - uberjar 中的 clojure 类路径目录
我在我的应用程序中使用clojure.java.classpath,我想知道我缺少哪些设置,因为clojure.java.classpath/classpath-directories
当我从 uberjar 运行它时输出为空。
这是一个最小的工作示例:
项目.clj:
和 src/cptest/core.clj:
跑步时lein run
,我得到
如果创建一个 uberjar lein uberjar
,那么
输出为空。Classpath directories ()
.
的输出jar tf /home/phil/cptest/target/cptest-0.1.0-SNAPSHOT-standalone.jar | grep cptest
(完整的输出很长):
更新
检查clojure/java/classpath.clj
,似乎调用
(classpath (clojure.lang.RT/baseLoader))
lein run
vsuberjar
方法
的行为不同,classpath
定义为:
maven - 从 maven shade 插件创建的 .jar 在访问 src/main/resources 下的资源时会抛出错误,但是从分解的 .jar 运行 main 有效吗?
更新了解决方案的执行摘要 根据 Victor 提供的答案,我实现了一个 Java 类,该类列出了类路径中文件夹资源的内容。对我来说最关键的是,当从 IDE、分解的 uberjar 或未分解的 uberjar(我通常使用 maven shade 插件创建)中执行时发现类路径资源时,这必须起作用。类和关联单元可在此处进行测试。
原始问题
当我运行非常简单的 java 测试程序访问标准 maven 项目中的目录结构时,我看到 maven-shade-plugin 和类路径资源的奇怪行为,如下所示:
当从 IDE 或分解的 maven 阴影 .jar(请参见下文) 运行时,它可以正常工作,这意味着它会打印:。
来源如下:
现在,如果我在我的项目中运行 mvn clean install 并
在 ${project.dir} 目标下运行 maven 阴影 .jar,我会看到以下异常:
使用爆炸的 .jar 运行
我在这里有整个项目:https ://github.com/buildlackey/maven-shade-non-working-example
但为了方便起见,这里是 pom.xml(如下),我尝试了两个 maven 阴影配置。
注意:我认为 IncludeResourceTransformer 没有任何用处,因为我的资源出现在 .jar 文件中的适当级别。
无论如何,提前感谢您提供的任何帮助〜克里斯
更新
当我尝试它时,这对我在 Spring 中不起作用(但如果有人在 Spring 方法上取得成功,我会很感兴趣)。我有一个可行的替代方案,我将很快发布。但是,如果您愿意评论如何修复这个失败的 Spring 尝试,我会非常感兴趣。
clojure - lein run vs lein trampoline run vs uberjar
lein run
和将 clojure 应用程序lein trampoline run
部署为 uberjar 有什么区别?有性能差异吗?
如果我执行lein run
/lein trampoline run
我可以 ssh 进入服务器并从 git 中提取我的更改,而无需重新启动应用程序,对于 uberjar 来说也是如此。在 uberjars 的情况下,对于我需要构建和部署应用程序的每一个更改。
提前致谢。
maven - maven uber war (cargo-maven2-plugin) 只合并第一个元素
我正在尝试合并两个战争,从而使用 maven uber war cargo-maven2-plugin 合并 web.xml 文件。所有标签(过滤器,servlet)的合并都按需要进行,但因为<context-param>
它只合并 RHS 上 web.xml 中定义的第一个元素,我想保留 LHS 上 web.xml 上的所有上下文参数合并所有<context.param>
元素在我的 RHS 上的 web.xml 中定义任何帮助将不胜感激。这是我的代码
RHS 上的 web.xml
**
- 合并.xml
**
pom.xml
gradle - 从 cucumber/groovy 测试创建 uberJar,包括使用 gradle 的依赖项
我在 {project_home}/src/test/groovy/ 中有一些功能测试
我希望能够使用 gradle 任务来:
从 {project_home}/src/test/groovy/ 下的所有 .groovy 文件制作一个 jar 文件,包括所有依赖项
能够运行这个 jar 文件来代替运行单个 groovy 文件
我遇到的所有示例都有一个 main 方法,而我没有 main()
所以我尝试使用“项目”的 build.gradle 并附加
跑了$gradle clean fatJar
但编译失败:
我确实在 /build/libs 下有 jar 文件
clojure - 使用“lein run”和运行 uberjar 文件的不同 slurp 行为
我目前正在尝试学习 Clojure,作为我实践培训的一部分,我正在实现一些众所周知的 Unix 工具(如grep
、
cat
等)的非常基本的行为ls
。
在实施cat
时,我偶然发现了一些看似奇怪的
slurp
. 当我在当前目录中运行以下代码lein run some-file.txt
时some-file.txt
,内容会按预期打印到 STDOUT。
但是,如果我uberjar
的项目与
然后cd
使用(该目录中存在文本文件)target/uberjar
运行独立 JAR
,只打印我的调试消息。java -jar cat-0.1.0-SNAPSHOT-standalone.jar some-file.txt
我觉得很奇怪的是没有显示错误消息,所以在我看来可以找到该文件。如果我使用不存在的文件作为参数运行 JAR,我会得到一个无法找到指定文件的异常(如预期的那样)。
因为我在 Windows 机器上工作,一位同事建议也许 Windows 影子文件可能是一个问题。所以我再次在Linux下测试了程序,同样的行为发生了。所以这似乎是我对 Clojure 的理解/我的项目设置的“问题”。
我的问题是:为什么在运行和运行独立 JAR 时slurp
的(或程序的)行为不同,我能做些什么来解决这个问题?lein run
java -jar cat-0.1.0-SNAPSHOT-standalone.jar
由于文件参数不是编译到JAR中的资源,所以(slurp (clojure.java.io/resource filename))
如果我没记错的话,没有必要。
gradle - 我如何运行一个由 cucumber/groovy 测试和依赖项组成的 uberJar
这是我想要完成的事情:
为 EndToEndFunctionalTests 测试构建一个 uberJar:
结果,我得到:
EndToEndFunctionalTests-develop.local.SNAPSHOT.jar
所以我想要做的是将其执行为:
有没有办法伪造一个 main() 并将其包含在清单中,所以这个 jar 执行。
我能够使用 cucumber runner 通过 gradle 从命令行运行黄瓜测试,但我想要的是能够运行 jar,因为:
- 我可以在任何地方运行这个 jar,因为它具有所有依赖项
- 我会缩短这些测试的运行时间,在 staging 和 qa 中,因为我只需要完成一次,然后在持续集成管道中的各种环境中运行它
java - 使用 Ant 创建 JavaFX fat jar
我有问题。如何使用 Ant 为 JavaFX 应用程序制作胖 jar?我知道互联网上有一些教程,但它涉及 Java 应用程序,而不是 JavaFX 应用程序。我认为这是不同的,因为我尝试遵循本教程,它适用于 Java 应用程序,但是在尝试运行应用程序后带有 fxml 文件的 JavaFX 应用程序中,它返回 NullPointerException: location is required (是的,我尝试修改 fxml 的路径文件,并使用 ClassLoader,它没有帮助)。我也尝试使用 One Jar 插件 for Ant,效果相同。
我有以下 build.xml 文件:
如何修改它,制作包含所有依赖项的胖 jar?我知道在 Maven 中更容易制作,但我想知道,这在 Ant 中是否可行。问候