Maven項目打包時,丟失依賴jar包的問題

問題

本來準備給Maven項目打個jar包,然後上傳到linux服務器運行。結果發現,mvn package打好的jar包只有自己寫的源代碼,依賴的那些jar包都丟失了。導致我運行jar包時,報classNotFoundException:io.netty。剛開始還以爲是代碼出問題了,經過一番分析才發現,原來我打的jar包裏只有自己寫的代碼。。。
難受

解決方案

通過一番搜索,終於找到了一個可行的解決方案。那就是通過maven的maven-assembly-plugin插件,注意版本號是2.5.5,我測試過3.5.0竟然不行,3.5打包到一半會卡住。

一、添加maven插件

下面是pom.xml文件的build塊代碼:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.5</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.yj.TCPClient.upload.App</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <!-- 添加此項後,可直接使用mvn package | mvn install -->
                <!-- 不添加此項,需直接使用mvn package assembly:single -->
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

    </build>

二、使用mvn package打包運行

我這裏使用idea的maven操作檯來打包:
maven操作檯
注意:點擊右上角的閃電⚡符號可以跳過測試哦

三、打包完畢,複製jar包到linux服務器運行

打包成功之後(build success),就可以在項目的target目錄下看到我們打好的jar包了,名字應該叫TCP_Client-1.0.0-jar-with-dependencies.jar。然後,我複製這個jar包到linux服務器運行就好了,所有依賴項都在裏面了。

總結

Maven這個東西真玄學,爲了給maven項目打包,我都折騰了三小時了,真難受啊。
困

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章