当前位置: 首页 > 知识库问答 >
问题:

mvn进程-资源不拉下用shade插件创建的uber jar

谢修真
2023-03-14

目标:使用maven阴影插件创建一个可执行的uber jar,该插件可以在另一个pom的mvn编译期间执行。

再现步骤:

  1. 创建pom。使用下面pom的“publisher”组件的xml
  2. 使用Jenkins构建进行mvn部署(mvn安装也可以)
  3. 向pom添加依赖项。“消费者”的xml(下面的pom)
  4. mvn编译消费者

预期行为:发布者的 Uber jar 被下载到消费者/目标目录中的某个位置

实际:Uber 罐子未出现在消费者目录中

组件 1:发布者

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mec.experiment</groupId>
<artifactId>publisher</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.2.6.Final</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifestFile>src/main/resources/META-INF/MANIFEST.mf</manifestFile>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

组成部分2:消费者

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mec.experiment</groupId>
<artifactId>consumer</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>com.mec.experiment</groupId>
        <artifactId>publisher</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

共有1个答案

公西宏峻
2023-03-14

我在评论中链接到的可能重复的答案有一个指向死示例页面的链接。这是给你的补充。插件配置属于消费者pom。

执行:java

全名:

org.codehaus.mojo:exec-maven-plugin:1.5.0:java

说明:在当前 VM 中执行提供的 java 类,并将包含项目的依赖项作为类路径。

属性:

需要执行Maven项目。需要对scope:test中的工件进行依赖项解析。目标是线程安全并支持并行构建。自版本:1.0起。

请特别参阅< code > executable dependency 了解您的用例。看起来它将允许您根据组id和工件引用< code>producer,而不是硬编码一个路径。

 类似资料:
  • 我正在使用Maven Shade插件在打包阶段包含所有依赖项。这适用于类,但不包括依赖资源。 以下是依赖罐的布局: 以下是阴影插件配置:

  • 正确地创建了Jar,并且在清单中提到了main类。我有以下几个问题: > 目标文件夹包含classes文件夹,而classes文件夹中有类文件。罐子里也有它们,所以为什么需要它们。我的目标是拥有一个只包含所有依赖项的可执行jar。 这些资源根本没有被添加到jar中。我已经根据网上看到的说明添加了变压器,但是没有用!!! 我完全没有关于如何包含资源的线索。感谢任何帮助!! 编辑:::: 这是我用于m

  • 我正在尝试使用maven-telte-resource-plugin在多模块maven项目中跨模块共享许多资源。不幸的是,共享的二进制资源在捆绑期间被损坏,大概是通过过滤。 我相信,由于从本地存储库中提取共享资源jar时包含损坏的二进制文件,因此在这一阶段会发生损坏。 是否有任何关闭过滤maven-远程资源插件? 目前,我的共享资源模块中的pom看起来像

  • 我有一个多模块Maven项目,它跨模块使用相同的资源文件。我创建了资源项目并将资源添加到src/main/Resources文件夹。这是我的pom.xml文件: 当我做构建时,META-INF/maven/remote-resources.xml文件没有创建。我做错了什么吗?

  • 以下 是对开发kibana 插件有用的资源 IRC channel kibana 官方为大家注册了一个类似聊天室的通道,在这里大家可以获取有用咨询和交流 Freenode Web Client. 文章 contributing guide kibana-plugin-notes(强烈推荐阅读) 视频 Contributors Guide to the Kibana Galaxy Kibana Pl