非maven項目快速轉(zhuǎn)換為maven項目的方法步驟
背景
公司有個很舊的項目,無法通過提交gitlab
來實現(xiàn)自動構(gòu)建docker
鏡像(當(dāng)然肯定可以通過其他的方式來構(gòu)建鏡像(這里可能沒有研究所以不太清楚),但是我當(dāng)時的想法就是把項目轉(zhuǎn)換為maven
的,然后通過配置plugin
來實現(xiàn))。
問題
因為舊的項目是spring
的項目可想而知是很多的jar
包,并且還有一些奇奇怪怪的jar
包(可能是第三方的,在中央庫根本就找不到)。這是很頭疼的,嘗試去找了一個每個jar
的GAV
,因為太多了就放棄了。然后就想是否能直接通過配置方式來解決這個問題,快速把所有jar
引入到項目中,并且可以使他在maven
編譯的時候也可以正常編譯(雖然在idea
中可以運行是因為我們配置了libraries
所有才能正常運行)。
解決方式
方法只適用與jdk1.8及以下
,因為1.8
以上他取消了rt.jar
這個基礎(chǔ)包。
<plugin> <!--使用maven-compiler-plugin來解決編譯時無法找到第三方依賴的問題--> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> <!-- 指定源代碼的字符編碼為UTF-8。--> <encoding>UTF-8</encoding> <!-- 用于指定傳遞給Java編譯器的參數(shù)。--> <compilerArgs> <!--一般不開調(diào)試的時候需要用到 這三個一般不開啟 但是調(diào)試的時候可以通到--> <!--啟用詳細(xì)輸出,顯示編譯過程的詳細(xì)信息。--> <!--<arg>-verbose</arg>--> <!--啟用unchecked警告,用于檢測未經(jīng)檢查的操作。--> <!--<arg>-Xlint:unchecked</arg>--> <!--啟用已過時元素使用警告,用于檢測已經(jīng)不推薦使用的API。--> <!--<arg>-Xlint:deprecation</arg>--> <!--bootclasspath 引導(dǎo)類路徑。引導(dǎo)類路徑是Java編譯器在編譯時使用的類路徑,其中包含了Java標(biāo)準(zhǔn)庫的核心類 其實可以不指定因為jdk11我測試的時候沒找到rt.jar 所以說只支持jdk1.8及一下 這里如果這個的可以補充--> <arg>-bootclasspath</arg> <arg>${env.JAVA_HOME}/jre/lib/rt.jar</arg> <!--重點! extdirs 擴展目錄允許你添加額外的類庫目錄,這里包括了Web應(yīng)用程序的lib目錄和Java運行時庫的ext目錄。 我們把自己的第三方j(luò)ar包通過擴展類的形式讓我們的編譯器可以識別到。從而使得maven能夠編譯成功。 --> <arg>-extdirs</arg> <arg> ${project.basedir}/src/main/webapp/WEB-INF/lib${path.separator}${env.JAVA_HOME}/jre/lib/ext </arg> </compilerArgs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> <configuration> <!--用于補充Web應(yīng)用程序的資源文件。--> <webResources> <webResource> <!--用于在部署后可以讓我們的tomcat識別到具有必要的第三方依賴--> <directory>${pom.basedir}/src/main/webapp/WEB-INF/lib/</directory> <!--將資源復(fù)制到指定目錄--> <targetPath>WEB-INF/lib/</targetPath> <!--包含那些文件--> <includes> <include>**/*.jar</include> </includes> </webResource> </webResources> </configuration> </plugin>
總結(jié)
maven-compiler-plugin
:解決在編譯過程中識別不到第三方依賴的問題
maven-war-plugin
:解決在部署后可以讓第三方包被tomcat識別
使用這兩個插件讓我們可以無需一個一個的添加denpendency
,之后的有再補充的jar
包,可以通過denpendency
交給maven
來管理。
注意
在idea
工具中你可能還需要將webapp/WEB-INF/lib/
添加到libraries
中,因為idea
默認(rèn)不是使用maven
來編譯程序的。
到此這篇關(guān)于非maven項目快速轉(zhuǎn)換為maven項目的方法步驟的文章就介紹到這了,更多相關(guān)非maven轉(zhuǎn)為maven項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot注入靜態(tài)屬性或靜態(tài)對象的方法
我們在使用SpringBoot為一些靜態(tài)屬性或者靜態(tài)對象注入時會發(fā)現(xiàn)注入不成功,我們可以以下這幾種方式把需要注入的值注入到靜態(tài)屬性中,感興趣的朋友一起看下2024-12-12sprintboot使用spring-security包,緩存內(nèi)存與redis共存方式
這篇文章主要介紹了sprintboot使用spring-security包,緩存內(nèi)存與redis共存方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10JAVA參數(shù)傳遞方式實例淺析【按值傳遞與引用傳遞區(qū)別】
這篇文章主要介紹了JAVA參數(shù)傳遞方式,結(jié)合實例形式分析了java按值傳遞與引用傳遞區(qū)別及相關(guān)操作注意事項,需要的朋友可以參考下2020-05-05淺析Java中SimpleDateFormat為什么是線程不安全的
SimpleDateFormat是Java中用于日期時間格式化的一個類,它提供了對日期的解析和格式化能力,本文主要來和大家一起探討一下SimpleDateFormat為什么是線程不安全的,感興趣的可以了解下2024-02-02解決mybatis 數(shù)據(jù)庫date 與 java中Date類型映射問題
這篇文章主要介紹了解決mybatis 數(shù)據(jù)庫date 與 java中Date類型映射問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來吧2020-11-11