使用Maven插件將依賴包 jar包 war包及配置文件輸出到指定目錄
寫在前面
最近遇到一個朋友遇到一個項目需要將 maven 的依賴包和配置文件分開打包然后用腳本執行程序。這樣的好處在於可以隨時修改配置文件內容及查看 jar 包。如果將所有打成一個 jar 包就會有個問題(例如:修改數據庫連接位置需要重新打包這樣就失去了使用配置文件的有優點)。
本文利用Maven插件將依賴包、jar/war包及配置文件輸出到指定目錄
1. 使用 maven-dependency-plugin 插件將依賴包導出到指定文件夾
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--${project.build.directory} class的輸出目錄不做設置的話默認代表項目根目錄的target目錄;
也可以使用“自定義文件夾/自定義文件夾 例如:a/b”,也可以使用絕對路徑如:“D:\test” -->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
以下步驟將會省略掉build plugins節點
2. 使用 maven-war-plugin 插件將war打包到指定路徑
打Jar包時,與此類似
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<outputDirectory>d:\test</outputDirectory>
<!--表示將所有的webapps項目下的文件拷貝到相應路徑-->
<webappDirectory>d:\test</webappDirectory>
</configuration>
</plugin>
3. 使用 maven-jar-plugin 插件移除配置文件將其不打包進 jar 包中,並可以將打包后的 jar 包輸出到指定路徑
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<!-- 指定打包的jar包輸出路徑-->
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
<!--不打入jar包的文件類型或者路徑-->
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
<exclude>**/*.yml</exclude>
<exclude>static/**</exclude>
<exclude>templates/**</exclude>
</excludes>
</configuration>
</plugin>
4. 使用 maven-resources-plugin 插件將需要復制的文件復制到指定路徑(例:將配置文件提取到指定路徑)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<!--打成jar包后復制到的路徑-->
<outputDirectory>
${project.build.directory}/conf
</outputDirectory>
<resources>
<resource>
<!--項目中的路徑-->
<directory>src/main/resources/</directory>
</resource>
</resources>
</configuration>
</execution>
<!--可配置多個提取復制路徑只需要 “<id>”名字不一樣即可-->
<execution>
<id>copy-bulid</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<outputDirectory>
${project.build.directory}/bin
</outputDirectory>
<resources>
<resource>
<directory>build/</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
使用 maven 命令執行打包命令
mvn clean package