天天看點

Maven實戰(五)使用maven開發的項目,如何更友善地提取第三方包

如果你的項目使用maven建構的話,當項目要上線,部署到伺服器上去的時候或許會碰見這樣的問題。問題就是,伺服器上沒有maven的環境,也就是說,項目所依賴到的那些倉庫(repository)中的jar包你需要單獨提取出來上傳到伺服器中去,解決辦法:

前期:在eclipse裡安裝完成Maven (具體參與前 Maven實戰 ),并項目為’Maven webapp項目‘類型,以spring-petclinic 為例

辦法1:mvn package

pom.xml  :<packaging>是war的話,     mvn package 的指令将項目依賴的jar包打到web-inf 下的lib檔案夾,如圖:

Maven實戰(五)使用maven開發的項目,如何更友善地提取第三方包

,完成後console會提示war包的位置資訊

辦法2:mvn assembly:assembly 

在${project}/target 檔案夾下發現新生成的 {artifactId}-jar-with-dependencies.jar 這個檔案,指令執行的過程中,maven會将jar包所依賴的包導出,并且解壓(unpackage),一并放在這個{artifactId}-jar-with-dependencies.jar包

Maven實戰(五)使用maven開發的項目,如何更友善地提取第三方包

注:pom.xml :

         <descriptorRefs>

            <descriptorRef>jar-with-dependencies</descriptorRef>

          </descriptorRefs>

這個jar-with-dependencies是assembly預先寫好的一個,組裝描述引用(assembly descriptor)

辦法3:按第三方包單獨部署

a:修改pom.xml <descriptorRef>jar-with-dependencies</descriptorRef>路徑,修改為:<descriptorRef>src/main/assembly/src.xml</descriptorRef>

b:于項目名稱/src/main/assembly 下建立 src.xml檔案:

<assembly

    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

    <id>jar-with-dependencies</id>

    <formats>

        <format>jar</format>

    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>

    <dependencySets>

        <dependencySet>

            <unpack>false</unpack>

            <scope>runtime</scope>

        </dependencySet>

    </dependencySets>

    <fileSets>

        <fileSet>

            <directory>${project.build.outputDirectory}</directory>

        </fileSet>

    </fileSets>

</assembly>

c:再執行mvn assembly:assembly

這樣在target檔案夾中就會看見新建立出來的{artifactId}-jar-with-dependencies.jar 這個jar包

裡面會将項目所依賴的所有第三方包按類型打包在裡面