寫在前面
最近遇到一個朋友遇到一個項目需要將maven的依賴包和配置文件分開打包然后用腳本執行程序。這樣的好處在於可以隨時修改配置文件內容及查看jar包。如果將所有打成一個jar包就會有個問題(例如:修改數據庫連接位置需要重新打包這樣就失去了使用配置文件的有優點)
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”--> <outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
2. 使用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>
3. 使用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