Idea下通过maven生成jar包踩坑记录

2021-01-13  本文已影响0人  heheworld

背景: 一个java应用,需要再centos上运行,思路是通过脚本来启动,
首先需要将java应用打成jar包,方式是通过maven来操作,然后编译报错

排查配置:

  1. 提示xxx 中没有主清单属性 ,需要在pom.xml文件中 配置 <mainClass>标签指定对应的启动类即可


    image-20210113145414036.png
        <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <classifier></classifier>
                    <archive>
                        <manifest>
                            <mainClass>包名+启动类名</mainClass>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>.</Class-Path>
                        </manifestEntries>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- 指定在打包节点执行jar包合并操作 -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

我这边遇到一个问题,因为使用的第三方jar包是本地生成的,在生成的可执行jar包中调用总是提示classNotFoundExcetion...
排查了下,生成的jar包中,没有本地第三方的jar包类文件,其他引用到的第三方仓库类都有,于是把引用的本地第三方jar包放在本地仓库,pom文件中dependency下,问题解决。
引用的本地第三方jar包放在本地仓库的命令格式:

mvn install:install-file -Dfile=本地第三方包名.jar -DgroupId=com.aa.bb -DartifactId=hello -Dversion=1.0 -Dpackaging=jar

我是通过把本地jar包放到本地仓库下解决了这个问题。

上一篇 下一篇

猜你喜欢

热点阅读