搬運(yùn) 既使用maven編譯,又使用lib下的Jar包

搬運(yùn) 既使用maven編譯,又使用lib下的Jar包
https://blog.csdn.net/catoop/article/details/48489365

在項(xiàng)目開(kāi)發(fā)中,項(xiàng)目用maven管理,是一個(gè)maven項(xiàng)目。
一般情況下jar包都可以使用pom.xml來(lái)配置管理,但也有一些時(shí)候,我們項(xiàng)目中使用了一個(gè)內(nèi)部jar文件,但是這個(gè)文件我們又沒(méi)有開(kāi)放到maven庫(kù)中。
我們會(huì)將文件當(dāng)?shù)轿覀冺?xiàng)目WEB-INF/lib中。
如果我們不對(duì)pom.xml進(jìn)行特殊配置的話,maven打包是不會(huì)自動(dòng)去引用和編譯lib中的jar文件的,所以需要我們修改下pom.xml文件。

修改maven-compiler-plugin的配置,如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
        <compilerArguments>
            <verbose />
            <bootclasspath>${env.JAVA_HOME}/jre/lib/rt.jar</bootclasspath>
            <extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
        </compilerArguments>
    </configuration>
</plugin>

其他配置是我的原來(lái)配置,針對(duì)lib引用這個(gè)問(wèn)題,只需要增加的是:

<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>

不過(guò)在3.1版本以后maven-compiler-plugin將compilerArguments定為過(guò)時(shí)了,建議大家按下面的方法寫(xiě)。
其中表示javac平時(shí)用空格隔開(kāi)的的每一個(gè)參數(shù)。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
        <compilerArgs> 
            <arg>-verbose</arg>
            <arg>-Xlint:unchecked</arg>
            <arg>-Xlint:deprecation</arg>
            <arg>-bootclasspath</arg>
            <arg>${env.JAVA_HOME}/jre/lib/rt.jar</arg>
            <arg>-extdirs</arg> 
            <arg>${project.basedir}/src/main/webapp/WEB-INF/lib</arg>
        </compilerArgs> 
    </configuration>
</plugin>

其中${project.basedir}一定要寫(xiě),不然會(huì)出現(xiàn)“在windows”下可以正常編譯,在Linux服務(wù)器上就“有可能”出現(xiàn)編譯找不到j(luò)ar包的錯(cuò)誤。

另外科普一下,maven的目錄約定:
pom.xml所在的目錄應(yīng)為項(xiàng)目的根目錄,假設(shè)該目錄為${proj-dir},那么Maven有以下假設(shè):

${proj-dir}/src/main/java —— 存放項(xiàng)目的.java文件。

${proj-dir}/src/main/resources —— 存放項(xiàng)目資源文件,如spring, hibernate配置文件。

${proj-dir}/src/test/jave —— 存放所有測(cè)試.java文件,如JUnit測(cè)試類(lèi)。

${proj-dir}/src/test/resources —— 測(cè)試資源文件。

${proj-dir}/target —— 項(xiàng)目輸出位置。

運(yùn)行一條mvn clean package命令,Maven會(huì)幫你清除target目錄,重新建一個(gè)空的,編譯src/main/java類(lèi)至target/classes,復(fù)制src/main/resources的文件至target/classes,編譯src/test/java至target/test-classes,復(fù)制src/test/resources的文件至target/test-classes;然后運(yùn)行所有測(cè)試;測(cè)試通過(guò)后,使用jar命令打包,存儲(chǔ)于target目錄。Maven做的事情一點(diǎn)也不少,只是都對(duì)用戶隱蔽起來(lái)了,它只要求你遵循它的約定。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,276評(píng)論 6 342
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,214評(píng)論 0 3
  • 簡(jiǎn)介 概述 Maven 是一個(gè)項(xiàng)目管理和整合工具 Maven 為開(kāi)發(fā)者提供了一套完整的構(gòu)建生命周期框架 Maven...
    閩越布衣閱讀 4,535評(píng)論 6 39
  • 1.編寫(xiě)POM Maven項(xiàng)目的核心文件是pom.xml,POM(Project Objcet Model)項(xiàng)目對(duì)...
    zlcook閱讀 6,008評(píng)論 7 26

友情鏈接更多精彩內(nèi)容