Maven scala java 混合打包

楔子

菜鳥的學習筆記
打包資源文件的處理

<!--
//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>
                      &lt;!&ndash;   <include>**/*.**</include>&ndash;&gt;
                      <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>
                <!-- &lt;!&ndash;jar包路徑&ndash;&gt; -->
                <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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章