问题标签 [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 投票
2 回答
2657 浏览

java - Maven:如何使用包含的外部库做可运行的 jar (uberjar)

到目前为止,我用 Ant 制作了可运行的 jar,并且没有任何问题。
但是我现在尝试 mavenize 我的项目,我真的不知道如何用这个工具做可运行的 jar。
我已经阅读了大量的教程(也在这里,在 Stackoverflow 上)、帮助、建议和......什么都没有。就我而言,它们都不起作用,这可能意味着我不了解一些基础知识。
我有这样一个简单的项目:

我的项目

这是应用程序,女巫使用 mysql-connector-java-5.1.24-bin.jar(放置在“lib”目录中)连接到 MySQL 数据库。
我想将此 jar 包含到最终 jar (DBPreformatter.jar) 中。我在许多配置中使用了汇编和着色插件,但他们从未将此 jar 添加到 DBPreformatter.jar 中。

这是我的 pom.xml:

如何解决这个问题呢?

0 投票
2 回答
2292 浏览

java - 如何将 tools.jar 包含到 uberjar 中(使用 maven-shade-plugin)?

pom.xml:

mvn install成功完成,(即 maventools.jar在构建过程中看到依赖项),但在执行时我有

0 投票
1 回答
278 浏览

clojure - Leiningen,repl,uberjar:无法解析符号,没有这样的 var

虽然我的lein 新应用程序项目在 Light Table 中愉快地运行,但 lein uberjar将无法工作。奇怪的是,它的行为与经典的 Pascal 编译器完全一样:它无法在定义之前解析引用。另一个好奇心:昨天它起作用了。我不知道在愚弄任何敏感的东西。

谷歌表示主题症状很常见;我尝试了任何可以帮助处于相同(?)困境中的其他人的方法,但无济于事。顺便说一句,他们通常将其归咎于软件错误:“获取最新版本的 Leiningen 和 Clojure”。我有 2.5.0 和 1.6。

项目(主文件)在这里:https ://github.com/Tyrn/pcc/blob/master/src/pcc/core.clj 事实上,parsed-args无法在build-album中解析;如果我将 -main 函数移动到文件顶部,则 -main 中的cli-options会发生“没有这样的 var” 。显式使用命名空间的任何摆弄都没有任何区别。

同样,在 Light Table 内,一切运行良好。

0 投票
1 回答
574 浏览

maven - Shade Plugin Harcording Dependency For Excluded Artifact 也

我有以下阴影插件配置:

我看到 XXXX:client 被排除在 maven 依赖项之外,但是在生成的 pom 中,我看到依赖项正在使用版本进行硬编码

有没有办法可以完全删除依赖项,或者只是删除硬编码的版本?

0 投票
0 回答
6562 浏览

spring-boot - 运行 Spring boot 胖 JAR

我在 Spring Boot 中创建了一个示例应用程序,它在 IDE 中正常运行。我想将它打包为一个胖 JAR 并通过命令提示符运行它。我该怎么做?我正在使用 java -jar JarName.jar. 这是我的构建脚本:

0 投票
3 回答
2898 浏览

clojure - 从 leiningen 的编译中排除某些 clj 命名空间

我有一个使用lein run. 现在我想使用lein uberjar. 但是,在我的目录中有几个src/projectname/名为 egplayground.clj的源文件stats.clj,我用它们来试验 emacs 和 repl,但我不想为最终项目编译。

使用类似的东西make,我会指定所有应该编译的文件。使用 clojure/leiningen,似乎所有文件都是默认编译的 -我如何排除文件?我在 leiningen 文档中没有找到任何内容。

我目前正在使用:aot :all. 这是改变什么的地方吗?同样,我找不到有关此的详细文档。

更新:

到目前为止,这些建议都没有奏效。然而,有效的方法是包含所有需要的命名空间,而不是排除那些不应该编译的命名空间。例如:

0 投票
3 回答
81592 浏览

scala - 如何在 IntelliJ IDEA 中使用 SBT 构建 Uber JAR(Fat JAR)?

我正在使用 SBT(在 IntelliJ IDEA 中)构建一个简单的 Scala 项目。

我想知道构建Uber JAR的最简单方法是什么文件(又名 Fat JAR、Super JAR)

我目前正在使用 SBT,但是当我将 JAR 文件提交到Apache Spark时,我收到以下错误:

线程“main”中的异常 java.lang.SecurityException:Manifest 主要属性的签名文件摘要无效

或者编译时出现这个错误:

java.lang.RuntimeException:去重:在以下位置找到不同的文件内容:
PATH\DEPENDENCY.jar:META-INF/DEPENDENCIES
PATH\DEPENDENCY.jar:META-INF/MANIFEST.MF

看起来是因为我的一些依赖项包括签名文件(META-INF),需要在最终的 Uber JAR 文件中删除。

我尝试使用sbt-assembly插件:

/project/assembly.sbt

/project/plugins.sbt

/build.sbt

当我单击“构建工件... ”时,我得到一个 JAR 文件。但我最终得到了同样的错误......

我是 SBT 的新手,对 IntelliJ IDE 的实验并不多。

谢谢。

0 投票
1 回答
314 浏览

clojure - 如何有条件地在 clojure web-app 中加载功能

我有一个 clojure Web 应用程序(码头服务器上的标准环处理程序和组合路由),我为此启用了实时资产重新编译作为中间件,这在开发中非常方便。随着我们越来越接近生产,我想找到一种方法不在生产中加载该代码,而是读取预编译的资产(我可以将其作为 lein 任务生成)。

目前,资产编译机制存在于项目代码中——它可以使用 eval-in-project 从 lein 任务中加载,因此我可以在两个地方重用相同的代码。然而,这意味着不需要的文件被编译并包含在生产应用程序中。

另一个问题是我正在使用一个资产编译工具,如果 uberjar'ed 导致应用程序无法在初始化时加载,因为它使用到 v8 的本机绑定,当预编译的资产可用。

如何避免在生产 uberjar 中加载此代码,但仍受益于开发和测试期间运行时的动态重新编译?

0 投票
2 回答
729 浏览

java - Maven Uberjar as Maven Dependency

I'm currently working with a Legacy app, whose process for building plugins requires adding dependencies on about 150 non-maven (ant I believe?) jar files. Ideally, I'd like to package these 150-jars into a single JAR, place it on Artifactory, and use that as a maven-dependency so that my team can more easily setup their development environment.

I've been experimenting with one-jar, maven-assembly-plugin, and maven-shade-plugin, which appears to just create one jar that contains several other jars (i.e. unzip the contents). However when adding that jar as a maven dependency, maven appears unable to resolve the contents/dependencies within these "sub-jars."

The code below is only an example of something I've tried; so feel free to suggest other approaches.

0 投票
1 回答
1280 浏览

java - 使用可运行 jar 时找不到 presistence.xml

由于以下原因,我在运行可运行的 jar 时遇到了一些麻烦

目录结构: 在此处输入图像描述

JAR META-INF/清单内容:

从根目录运行命令:

java -jar controller-1.0-jar-with-dependencies.jar

这导致

未找到 META-INF/perstistence.xml

但它在 META-INF 目录中。而且config.cfg被正确读取,所以当前目录确实在类路径中。

对我来说奇怪的是以下命令运行得很好:

但是,如果我在 jar 名称后删除分号 (;),则错误与 jar 午餐尝试期间相同。

有什么想法吗?jar 是用 maven 创建的