问题标签 [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.

0 投票
1 回答
387 浏览

maven - 骆驼:类型转换器如何加载?

通过mvn compile exec:java它运行我的应用程序时说:

运行时java -jar(使用 uberjar 制作maven-shade-plugin)它说:

检查差异(199 比 182)。结果,我的代码在某些情况下无法按预期工作。

使用骆驼2.16.1。如果需要完整的依赖项列表,请告诉我,我会更新。

更新 1 通过添加解决

到我的maven-shade-plugin配置。

0 投票
0 回答
298 浏览

jenkins - 在詹金斯中使用 gradle 构建 uberjar 失败

嗨,我正在使用 gradle 创建一个胖罐。它在我的本地机器上正常工作,但在从 Jenkins 运行时失败。

我本地的 gradle 版本是:GradleVersion.current().getVersion()=2.2.1 Jenkins 中的那个:GradleVersion.current().getVersion()=2.4

build.gradle 看起来像

有什么关于gradle版本的吗?

我只是运行任务:clean uberjar

0 投票
0 回答
465 浏览

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 runvsuberjar方法 的行为不同,classpath定义为:

0 投票
2 回答
1727 浏览

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 尝试,我会非常感兴趣。

0 投票
1 回答
3310 浏览

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 的情况下,对于我需要构建和部署应用程序的每一个更改。

提前致谢。

0 投票
1 回答
306 浏览

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

0 投票
1 回答
2368 浏览

gradle - 从 cucumber/groovy 测试创建 uberJar,包括使用 gradle 的依赖项

我在 {project_home}/src/test/groovy/ 中有一些功能测试

我希望能够使用 gradle 任务来:

  1. 从 {project_home}/src/test/groovy/ 下的所有 .groovy 文件制作一个 jar 文件,包括所有依赖项

  2. 能够运行这个 jar 文件来代替运行单个 groovy 文件

我遇到的所有示例都有一个 main 方法,而我没有 main()

所以我尝试使用“项目”的 build.gradle 并附加

跑了$gradle clean fatJar

但编译失败:

我确实在 /build/libs 下有 jar 文件

0 投票
1 回答
271 浏览

clojure - 使用“lein run”和运行 uberjar 文件的不同 slurp 行为

我目前正在尝试学习 Clojure,作为我实践培训的一部分,我正在实现一些众所周知的 Unix 工具(如grepcat等)的非常基本的行为ls

在实施cat时,我偶然发现了一些看似奇怪的 slurp. 当我在当前目录中运行以下代码lein run some-file.txtsome-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 runjava -jar cat-0.1.0-SNAPSHOT-standalone.jar

由于文件参数不是编译到JAR中的资源,所以(slurp (clojure.java.io/resource filename))如果我没记错的话,没有必要。

0 投票
1 回答
276 浏览

gradle - 我如何运行一个由 cucumber/groovy 测试和依赖项组成的 uberJar

这是我想要完成的事情:

为 EndToEndFunctionalTests 测试构建一个 uberJar:

结果,我得到:

EndToEndFunctionalTests-develop.local.SNAPSHOT.jar

所以我想要做的是将其执行为:

有没有办法伪造一个 main() 并将其包含在清单中,所以这个 jar 执行。

我能够使用 cucumber runner 通过 gradle 从命令行运行黄瓜测试,但我想要的是能够运行 jar,因为:

  1. 我可以在任何地方运行这个 jar,因为它具有所有依赖项
  2. 我会缩短这些测试的运行时间,在 staging 和 qa 中,因为我只需要完成一次,然后在持续集成管道中的各种环境中运行它
0 投票
0 回答
518 浏览

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 中是否可行。问候