如果你的項目使用maven建構的話,當項目要上線,部署到伺服器上去的時候或許會碰見這樣的問題。問題就是,伺服器上沒有maven的環境,也就是說,項目所依賴到的那些倉庫(repository)中的jar包你需要單獨提取出來上傳到伺服器中去,解決辦法:
前期:在eclipse裡安裝完成Maven (具體參與前 Maven實戰 ),并項目為’Maven webapp項目‘類型,以spring-petclinic 為例
辦法1:mvn package
pom.xml :<packaging>是war的話, mvn package 的指令将項目依賴的jar包打到web-inf 下的lib檔案夾,如圖:
,完成後console會提示war包的位置資訊
辦法2:mvn assembly:assembly
在${project}/target 檔案夾下發現新生成的 {artifactId}-jar-with-dependencies.jar 這個檔案,指令執行的過程中,maven會将jar包所依賴的包導出,并且解壓(unpackage),一并放在這個{artifactId}-jar-with-dependencies.jar包
注: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包
裡面會将項目所依賴的所有第三方包按類型打包在裡面