问题标签 [maven-shade-plugin]

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 回答
2183 浏览

java - 我可以在 java 命令行上指定一个 JPA 兼容的 persistence.xml 文件吗?

我有一个包含所有 java 类的 UberJar,但想用外部 persistence.xml 文件执行这个 jar。根据规范,Hibernate(或任何其他 JPA 提供程序)在类路径上的任何 META-INF 文件夹中查找 persistence.xml 文件,但我无法使用 UberJar 完成这项工作。有任何想法吗?UberJar 的类加载器是否仅限于 jar 文件的内容?

0 投票
2 回答
3350 浏览

jar - 包括一个非 Mavenized 依赖项,因此它可以与 maven-shade-plugin 一起使用

我想将不使用 Maven的GData Client作为依赖项包含到我的 Maven 项目中。它作为一堆 JAR 文件提供。

另外,我使用Maven Shade Plugin构建了一个没有任何外部依赖项的可执行 JAR(使用默认配置,没有重命名/包含/排除/转换依赖项)。

我怎样才能做到这一点?

(仅将 JAR 作为资源添加是行不通的,因为 Shade 插件必须提取它们)。

0 投票
1 回答
2015 浏览

plugins - m2eclipse:作为 JAR 的 Maven 依赖项不是项目

我在 Eclipse 上有 m2eclipse 插件的 Maven 项目。这个项目有一些依赖。其中一些是 slf4j、apache-commons 等库。但也有我的库,我正在 Eclipse 中同时开发。不幸的是,m2eclipse 以这样一种方式创建构建路径,即我的库不是作为来自 M2 存储库的 JAR 档案而是作为来自/target/classes目录的类文件添加到类路径中。出于这个原因,我不能使用 maven-shade-plugin 因为我收到一条消息:

Error creating shaded jar: error in opening zip file /home/user/workspace/my-project/project-a/target/classes”。

当我project-a从命令行构建时,mvn clean install一切正常 - 生成了阴影 JAR。如何解决?

0 投票
3 回答
12199 浏览

maven - 在多模块项目中使用 Maven 阴影插件 - NullPointerException

我有一个场景,我需要创建一个包含所有模块及其依赖项的多模块 maven 项目的 uber jar。我尝试使用 Maven 阴影插件。但它似乎只有在我在模块级别使用它时才有效。如果我在父 pom 中添加插件条目,那么构建会中断(它会尝试遮蔽父 pom)

这似乎很有意义,因为<packaging>父 maven 项目是 pom。但是应该有一些方法可以为多模块项目创建一个 uber jar ......有什么想法吗?

0 投票
1 回答
601 浏览

jar - 存在重复类时,Maven shade 插件会导致构建失败吗?

Maven 阴影插件将项目的 Java 类及其依赖项合并到单个 über JAR 文件中。如果有任何重叠(例如,两个依赖项包含一个具有相同限定名称的类),它会发出警告并(如果我理解正确)使用它遇到的该类的最后一个版本。

对我来说,这似乎有点太松懈了。这种重叠很容易在运行时导致链接或其他问题,例如当重叠的类包含不同的字节码时。

是否可以将阴影插件配置为在重叠时使构建失败,而不仅仅是发出警告?这在没有人查看日志文件以查看是否有任何警告的 CI 服务器上特别有用。

0 投票
5 回答
14364 浏览

java - 如何配置 maven shade 插件以在我的 jar 中包含测试代码?

我使用 shade maven 插件来构建我的项目,以便它的所有依赖项都包含在一个 jar 中(这使得它更容易在 Hadoop 上运行)。Shade 似乎默认排除了我的测试代码,这是可以理解的。因为我想对我的集群运行集成测试,所以我希望设置另一个配置文件来为此目的构建一个单独的 jar。有没有办法配置这个插件也包括测试代码?

0 投票
3 回答
5784 浏览

java - 使用 Maven Shade 插件时出现 ClassNotFound 异常

我正在尝试关注此链接: http ://maven.apache.org/plugins/maven-shade-plugin/examples.html

我是Maven的新手。试图效仿这个例子,我觉得有点不够深入。

我能够让 Quartz Scheduler 开始使用 Spring。我希望能够使用 jar 文件从命令行运行它。

这是我使用的类和 pom 文件的列表。

阴影maven插件

编辑:

我能够得到一个阴影 jar 文件。我使用 mvn clean install

但是当我尝试从命令行运行它时,出现以下错误。

C:\Users\SpringExample\target>java -jar SpringExample-1.0-SNA PSHOT-shaded.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/sonatype/haven/Ex odusCli Caused by: java.lang.ClassNotFoundException: org.sonatype.haven.ExodusCli at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class: org.sonatype.haven.ExodusCli. Program will exit.

编辑2:

我使用此链接在上面的 pom 中使用了以下内容:

http://seanfreitag.wordpress.com/2011/07/25/create-an-executable-jar-with-dependencies-using-maven/

0 投票
2 回答
7706 浏览

maven-2 - 是否有用于创建控制台应用程序的 Maven 架构?

是否可以通过mvn archetype:generate具有主要功能的 maven 存根项目生成一个 maven 存根项目,并且部分构建过程包括制作 App.cmd/App.sh 以从 shell 运行应用程序?

看来我需要maven-shade-plugin来创建一个带有用于命令行启动的包装脚本的控制台应用程序 jar。但是,我不知道他们是否是配置 maven 项目以使用它并创建一个空的控制台应用程序的架构类型。

0 投票
3 回答
6272 浏览

maven - Maven shade jar 抛出异常

我有以下例外:

cachedInputStream(Resource.java:61) at sun.misc.Resource.getByteBuffer(Resource.java:144) at java.net.URLClassLoader.defineClass(URLClassLoader.java:256) at java.net.URLClassLoader.access$000(URLClassLoader. java:58) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:197) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java. lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 找不到主类: com.mainClass。程序将会退出。URLClassLoader.defineClass(URLClassLoader.java:256) 在 java.net.URLClassLoader.access$000(URLClassLoader.java:58) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:197) 在 java.security.AccessController.doPrivileged (本机方法)在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301 ) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 找不到主类:com.mainClass。程序将会退出。URLClassLoader.defineClass(URLClassLoader.java:256) 在 java.net.URLClassLoader.access$000(URLClassLoader.java:58) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:197) 在 java.security.AccessController.doPrivileged (本机方法)在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301 ) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 找不到主类:com.mainClass。程序将会退出。doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 找不到主类:com.mainClass。程序将会退出。doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 找不到主类:com.mainClass。程序将会退出。

我的pom:

0 投票
1 回答
5799 浏览

java - Superfluous warnings when using maven-shade-plugin

I am using maven-shade-plugin for a simple maven project, the plugin successfully includes all the dependencies into a final "shaded" jar. The process works well every time and produces exactly what I need.

When run the "first" time (after a clean), the plugin is quiet and produces very little output. However, when re-run (without a clean from the last build), there are lots of warning messages such as this;

This are warning messages only and the final artifact works fine.

My question is simple: how can I safely workaround or suppress these warning messages without having to run a clean first?


note: A possible solution would be to move to the maven-assembly-plugin, but I would prefer not to because the configuration for maven-shade-plugin is very nice and simple.