楔子
菜鳥的學習筆記
打包資源文件的處理
<!--
//TODO 資源1 和資源2 控制的是 是否把 資源文件打入jar 包中,他們是共同控制的,
//TODO 資源3 是獨立控制的,他是 控制資源文件 獨立拷貝到某個位置,注意project.build.directory |project.build.outputDirectory 的區別
-->
pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.stu</groupId>
<artifactId>spscacla</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spscacla</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<!-- 文件拷貝時的編碼 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 編譯時的編碼 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<encoding>UTF-8</encoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<joda-time.version>2.9.9</joda-time.version>
<commons-io>2.6</commons-io>
<scala.version>2.11.12</scala.version>
<plugin.maven.scala.version>3.1.3</plugin.maven.scala.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 其他 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
<!-- 時間 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda-time.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io}</version>
</dependency>
<!-- scala -->
<!-- 打包scala 這個不可少 -->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<!-- java 下面的 xml等文件 打入 jar -->
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<!--
//TODO 資源1 和資源2 控制的是 是否把 資源文件打入jar 包中,他們是共同控制的,
//TODO 資源3 是獨立控制的,他是 控制資源文件 獨立拷貝到某個位置,注意project.build.directory |project.build.outputDirectory 的區別
-->
<!-- 資源1 -->
<directory>src/main/resources</directory>
<!-- <includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<!– <include>**/*.**</include>–>
<include>pics/*.**</include>
</includes>-->
<!-- 位置E -->
<excludes>
<exclude>pica/*.jpg</exclude>
<exclude>pics/*.**</exclude>
<exclude>rebel.xml</exclude>
</excludes>
<!--<filtering>false</filtering>-->
<!-- && 在IDE中運行要把這個給註釋掉,因爲IDEA打包 默認路勁是 classes ,有下面這行 會把配置文件轉移到其他目錄 -->
<!-- TODO 在IDE 運行要把這個註釋掉 |如果配置了這部分(資源文件配置part2)這行配置可以忽略 -->
<!-- <targetPath>${project.build.directory}/config</targetPath>-->
</resource>
<!--無法分離的jar包如果jar包不大可以選擇直接打入源碼jar包 -->
<resource>
<!-- <!–jar包路徑–> -->
<directory>${project.basedir}/libs</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</resources>
<plugins>
<!-- 解決資源文件的編碼問題 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<!-- 排除 不需要的資源文件 ?爲何 位置E 不生效呢-->
<exclude>pics/*.**</exclude>
</excludes>
</resource>
</resources>
<!--project.build.outputDirectory|這個是打入jar -->
<!-- 資源3 project.build.directory |project.build.outputDirectory -->
<outputDirectory>${project.build.directory}/config</outputDirectory>
</configuration>
</execution>
</executions>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<!--不打包資源文件 到jar 中|這裏與resource 無關 -->
<!-- 資源2 -->
<excludes>
<exclude>static/**</exclude>
</excludes>
<archive><!-- 清單文件 -->
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.stu.spscacla.SpscaclaApplication</mainClass>
<!-- 打包時 MANIFEST.MF文件不記錄的時間戳版本 -->
<useUniqueVersions>true</useUniqueVersions>
</manifest>
<manifestEntries><!-- 給清單文件添加鍵值對(配置文件外置) -->
<Class-Path>config/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!-- TODO 打包命令 -->
<!-- mvn clean scala:compile compile package -->
<!-- mvn clean scala:compile dependency:copy-dependencies -DoutputDirectory=target/lib compile package -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.1</version>
<!-- 資源文件配置part2 -->
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<includeScope>compile
</includeScope><!-- 拷貝是排除test 的依賴 這部分可以參考https://liugang594.iteye.com/blog/2093082 -->
</configuration>
</execution>
</executions>
</plugin>
<!-- scala 打包配置 |難道有 scala-jar可以不需要這個? -->
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
<includes>
<include>
<groupId>cn.jstars</groupId>
<artifactId>datatocloud</artifactId>
</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</project>