搬運 既使用maven編譯肖方,又使用lib下的Jar包
https://blog.csdn.net/catoop/article/details/48489365
在項目開發(fā)中祥绞,項目用maven管理矾柜,是一個maven項目阱驾。
一般情況下jar包都可以使用pom.xml來配置管理就谜,但也有一些時候怪蔑,我們項目中使用了一個內(nèi)部jar文件,但是這個文件我們又沒有開放到maven庫中丧荐。
我們會將文件當?shù)轿覀冺椖縒EB-INF/lib中缆瓣。
如果我們不對pom.xml進行特殊配置的話,maven打包是不會自動去引用和編譯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>
其他配置是我的原來配置车荔,針對lib引用這個問題渡冻,只需要增加的是:
<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
不過在3.1版本以后maven-compiler-plugin將compilerArguments定為過時了,建議大家按下面的方法寫忧便。
其中表示javac平時用空格隔開的的每一個參數(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àn)“在windows”下可以正常編譯珠增,在Linux服務(wù)器上就“有可能”出現(xiàn)編譯找不到j(luò)ar包的錯誤超歌。
另外科普一下,maven的目錄約定:
pom.xml所在的目錄應(yīng)為項目的根目錄蒂教,假設(shè)該目錄為${proj-dir}巍举,那么Maven有以下假設(shè):
${proj-dir}/src/main/java —— 存放項目的.java文件。
${proj-dir}/src/main/resources —— 存放項目資源文件凝垛,如spring, hibernate配置文件懊悯。
${proj-dir}/src/test/jave —— 存放所有測試.java文件,如JUnit測試類梦皮。
${proj-dir}/src/test/resources —— 測試資源文件炭分。
${proj-dir}/target —— 項目輸出位置。
運行一條mvn clean package命令届氢,Maven會幫你清除target目錄欠窒,重新建一個空的,編譯src/main/java類至target/classes退子,復制src/main/resources的文件至target/classes岖妄,編譯src/test/java至target/test-classes,復制src/test/resources的文件至target/test-classes寂祥;然后運行所有測試荐虐;測試通過后,使用jar命令打包丸凭,存儲于target目錄福扬。Maven做的事情一點也不少腕铸,只是都對用戶隱蔽起來了,它只要求你遵循它的約定铛碑。