日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven assembly打包文件被覆盖问题

發(fā)布時間:2023/12/8 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven assembly打包文件被覆盖问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Mavenassembly插件使用:

最近在做一個小工程,利用java啟動運行。

為了簡單方便使用運行,利用mavenassembly將需要使用的jar都打包到一個jar中。這樣無論拷貝到哪里,只有運行就可以,不用需要任何配置。

配置時指定mainClass,運行javamain函數(shù)時則可以不用指定包含main函數(shù)的類路徑名。如運行下面的jar文件則非常簡單方便(后臺運行):nohup?java?-jar?CalculateScore.jar?&

第一步:需要在pomxml中添加配置;

第二步:配置mavenRun?ConfigurationsGoals配置成assembly:assembly即可。

上面的過程一直在使用,很正常。但最近的小應用卻出了問題:

打出的jar包不產(chǎn)生日志文件,具體說是不生成log4j的日志信息,程序運行正常也不報錯,任何提示都沒有。

?

網(wǎng)上各種查詢,沒有結(jié)果。為了解決問題就各種嘗試。

?

腦子里一直有疑問:以前的都正常使用,都可以打印日志,為什么這個就不行呢?

各種嘗試都不行,于是就反編譯jar包來看。結(jié)果發(fā)現(xiàn)log4j.properties文件不是自己的那個文件,不知道是哪個包里的,而自己程序中都使用的Logger.getLogger(name)的形式,所以都無法打印日志信息。

?

問題來了,為什么不是自己的那個log4j配置文件呢?

Maven打包的時候Console中都有日志信息,仔細查看發(fā)現(xiàn),多次提示log4j的配置已經(jīng)加入并跳過。

于是猜想:一定是打包的過程中,先加載了其他jar中的log4j的配置文件,而以后的包括自己應用中的log4j的配置文件都被忽略了。

?

可是問題又來了,自己以前使用同樣的方式,也使用了很多第三方包,都包含有log4j的配置文件,為什么都沒有問題呢?查看以前的打的包,log4j的配置文件都是自己工程中配置的,這是為什么呢?

?

于是就開始比較打包的配置過程是否有差別,又有新發(fā)現(xiàn):

Maven打包的Run?Configurations配置中有項Base?directory,這里配置有問題。

如下面的兩張圖所示:

如果Base?directory中配置的是通過Browse?Workspace選擇的工程就會產(chǎn)生上面的問題;

如果Base?directory中配置的是通過Browse?File?System選擇的文件地址路徑就不會產(chǎn)生上面的問題。

具體為什么會出現(xiàn)這種情況,有待研究。

?

會產(chǎn)生問題的配置方式:

?

不會產(chǎn)生問題的配置方式


總結(jié)

以上是生活随笔為你收集整理的Maven assembly打包文件被覆盖问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。