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

将应用程序版本添加到清单

姬阳曜
2023-03-14

我不知道如何让maven-shade-plugin将应用程序版本从POM文件包含到Manifest文件中。我找到了一些maven-jar-plugin的示例,建议包括

<archive>                   
    <manifest>
        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
    </manifest>
</archive>

在插件配置部分(http://blog.soebes.de/blog/2014/01/02/version-information-into-your-appas-with-maven/)中。我为maven-shade-plugin尝试了这个,但它不起作用。我还试图找到一些信息,如果组织.apache.maven.插件.shade.resource.ManifestResource转换器可以做到这一点,但我在文档中找到任何东西。

有人知道怎么做吗?

谢谢!

共有1个答案

屈晨
2023-03-14

正如在官方说明页中所描述的将条目添加到清单文件中一样,也可以支持实现和规范的版本和标题,因为它们是清单文件的条目。

但是Maven Shade插件不支持Apache Maven Archiver,所以

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.3</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <manifestEntries>
                            <Main-Class>${project.build.mainClass}</Main-Class>
                            <Specification-Title>${project.artifactId}</Specification-Title>
                            <Specification-Version>${project.version}</Specification-Version>
                            <Implementation-Title>${project.artifactId}</Implementation-Title>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
                        </manifestEntries>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

这个配置也用于我的Spring项目,在那里我能够通过应用程序.class.getPackage(.get实现版本()直接检索版本号。

然而,对maven shade的简单替换会带来副作用,因为不包括额外的资源文件,如how

<transformers>
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
        <resource>META-INF/spring.handlers</resource>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
        <resource>META-INF/spring.schemas</resource>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
        <resource>META-INF/spring.tooling</resource>
    </transformer>
    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
        <manifestEntries>
            <Main-Class>${project.build.mainClass}</Main-Class>
            <Specification-Title>${project.artifactId}</Specification-Title>
            <Specification-Version>${project.version}</Specification-Version>
            <Implementation-Title>${project.artifactId}</Implementation-Title>
            <Implementation-Version>${project.version}</Implementation-Version>
            <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
        </manifestEntries>
    </transformer>
</transformers>

 类似资料:
  • 在我的昂首阔步的UI中,当我单击“试用”并执行一个请求时,请求是在没有任何令牌的情况下发送的。 问题--有什么方法可以查询登录请求并将授权令牌添加到Swagger UI请求中吗?

  • 我在Kubernetes服务的默认命名空间上安装了一个python应用程序。它使用starlette\u exporter,并向Prometheus公开endpoint。当我访问endpoint时,我看到: 我还在库伯内特斯服务的命名空间上安装了。它没有自定义,我使用此命令进行安装: 要将我的应用程序指标添加到Prometheus堆栈中,我可以在Grafana仪表板上跟踪它们,有哪些必要步骤?据我

  • 我目前正在开发基于Quarkus的API,该API将托管在API网关上,该网关要求我们的应用程序以基本路径运行,我通过设置Quarkus发现了这一点。放松。应用程序中的路径。属性我可以使用基本路径运行应用程序,并且它将自动添加到规范中。 我正在使用org生成一个OpenAPI 3规范。日食微文件。openapi。注释。我的问题是,在规范中,这个基本路径被添加到每个操作中。相反,我试图只在服务器声明

  • 我想在我的应用程序中添加带有,但一旦我将插件添加到我的应用程序中。yaml,我的应用程序不再运行。下面是错误 失败:生成失败,出现异常。 > 错误:任务执行失败:app:transformDexArchiveWithExternalLibsDexMergerForDebug'。 通用域名格式。Android建设者德兴。DexArchiveMergerException:合并dex存档时出错:/Us

  • 问题内容: 我一直在开发React应用程序,现在我需要Redux来处理它的某些方面。 阅读了一堆教程之后,我相当着迷于如何使“更智能”的组件“笨拙”以及如何将功能移入我的动作和化简器中。 因此,例如,应用程序的一个方面更多是待办事项列表样式。 我的课程之一是这样开始的: 因此,如您所见,这是非常繁重的逻辑。我已经开始通过在索引文件中添加来添加Redux ,并制作了一个基本的reducers文件,该

  • 我正在为我们的应用程序创建升级路径,在此过程中出现了几个问题。我想,我的配置经常在这种情况下使用,所以也许有人以前经历过。 简短的应用程序描述: JSF Web应用程序 ICE作为JSF框架(实际版本1.8.3最新是3.1) 接缝作为EJB/View之间的连接(实际是2.1.1,最新是2.2.2或3) 在JBoss 4.2.2中部署。GA(最新是7.1) 通过Hibernate/Seam Enti