首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用maven jar插件在生成jar文件的Manifest文件的类路径中列出依赖项及其相对路径?

如何使用maven jar插件在生成jar文件的Manifest文件的类路径中列出依赖项及其相对路径?
EN

Stack Overflow用户
提问于 2020-01-23 14:42:58
回答 1查看 242关注 0票数 0

我正在使用Maven和maven - jar进行java项目,我已经使用maven jar插件为MANIFEST.MF中的jar文件生成了一个依赖类路径。以下是我的插件用法:

代码语言:javascript
复制
      <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                    </manifest>
                    <manifestEntries>
                        <Build-Time>${maven.build.timestamp}</Build-Time>
                    </manifestEntries>
                    <manifestSections>
                        <manifestSection>
                            <name>${project.name}</name>
                            <manifestEntries>
                                <git-branch>${git.branch}</git-branch>
                                <git-build-host>${git.build.host}</git-build-host>
                                <git-build-time>${git.build.time}</git-build-time>
                                <git-build-user-email>git.build.user.email</git-build-user-email>
                                <git-build-user-name>git.build.user.name</git-build-user-name>
                                <git-build-version>${git.build.version}</git-build-version>
                            </manifestEntries>
                        </manifestSection>
                    </manifestSections>
                </archive>
            </configuration>
  </plugin

生成的类路径如下:

代码语言:javascript
复制
 Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Build-Time: 2020-01-23T13:34:14Z
Class-Path: org/apache/logging/log4j/log4j-api-2.6.2.jar 
org/apache/logging/log4j/log4j-core-2.6.2.jar
org/apache/commons/commons-configuration2-2.2.jar org/apache/commons/commons-lang3-3.6.jar
commons-loggin g/commons-logging-1.2.jar
commons-beanutils/commons-beanutils-1.9.3.jar
commons-collections/commons-collections-3.2.2.jar 
Created-By: Apache Maven 3.6.2
Build-Jdk: 1.8.0_181

Name: service_utils
git-commit-id-abbrev: d78e66c

但是,我确实需要使用相对路径生成类路径,而不是通过lib或WEB生成路径。我希望有这样的东西:

代码语言:javascript
复制
Manifest-Version: 1.0
Class-Path: 
../../../org/hibernate/hibernate-core/5.1.0.Final/hibernate-core-5.1.0.Final.jar ../artifacts/org/hibernate/hibernate-core/5.1.0.Final/hibernate-core-5.1.0.Final.jar ../../../org/hibernate/common/hibernate-commons-annotations/5.0.1.Final/hibernate-commons-annotations-.0.1.Final.jar
../artifacts/org/hibernate/common/hibernat e-commons-annotations/5.0.1.Final/hibernate-commons-annotations-5.0.1 .Final.jar
../../org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final.jar 
../artifacts/org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final.jar 
../../../com/mchange/c3p0/ 0.9.2.1/c3p0-0.9.2.1.jar

我已经搜索和研究了许多StackOverflow关于在jar文件中使用清单文件及其相对路径类路径的问题,我已经看到了gradle的选项,但是我正在寻找maven解决方案,如果我可以用maven jar插件来执行这一点,我会更好。

EN

回答 1

Stack Overflow用户

发布于 2020-01-24 11:29:25

我找到了一种获取相对地址的方法,但是深度是硬编码的,对于多模块项目来说,它不是一个完美的解决方案。

代码语言:javascript
复制
<manifest>                                 
     <addClasspath>true</addClasspath>
     <mainClass>My.Main</mainClass>
     <classpathLayoutType>custom</classpathLayoutType> 
 <customClasspathLayout>../../../$${artifact.groupIdPath}/$${artifact.artifactId}-$${artifact.version}$${dashClassifier?}.$${artifact.extension} ../artifacts/$${artifact.groupIdPath}/$${artifact.artifactId}-$${artifact.version}$${dashClassifier?}.$${artifact.extension}</customClasspathLayout>
</manifest>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59881114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档