既使用maven編譯,又使用lib下的Jar包

在項目開發中,項目用maven管理,是一個maven項目。 
通常狀況下jar包均可以使用pom.xml來配置管理,但也有一些時候,咱們項目中使用了一個內部jar文件,可是這個文件咱們又沒有開放到maven庫中。 
咱們會將文件當到咱們項目WEB-INF/lib中。 
若是咱們不對pom.xml進行特殊配置的話,maven打包是不會自動去引用和編譯lib中的jar文件的,因此須要咱們修改下pom.xml文件。java

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

<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>spring

不過在3.1版本之後maven-compiler-plugin將compilerArguments定爲過期了,建議你們按下面的方法寫。 
其中表示javac平時用空格隔開的的每個參數。apache

<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}必定要寫,否則會出現「在windows」下能夠正常編譯,在Linux服務器上就「有可能」出現編譯找不到jar包的錯誤。windows

另外科普一下,maven的目錄約定: 
pom.xml所在的目錄應爲項目的根目錄,假設該目錄爲${proj-dir},那麼Maven有如下假設:服務器

${proj-dir}/src/main/java —— 存放項目的.java文件。app

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

${proj-dir}/src/test/jave —— 存放全部測試.java文件,如JUnit測試類。maven

${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作的事情一點也很多,只是都對用戶隱蔽起來了,它只要求你遵循它的約定。

相關文章
相關標籤/搜索