springboot使用maven打包實現resources分離和實現lib、resources分離

jar包分離resources文件夾

修改pom.xml文件

<build>
        <!-- jar包名 -->
        <finalName>SearchIntegration</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <!-- 指定配置文件目錄,這樣jar運行時會去找到同目錄下的resources文件夾下查找 -->
                        <manifestEntries>
                            <Class-Path>resources/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <!-- 打包時忽略的文件(也就是不打進jar包裏的文件) -->
                    <excludes>
                        <exclude>**/**</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <!-- 複製資源文件 -->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <!-- 資源文件輸出目錄 -->
                            <outputDirectory>${project.build.directory}/resources</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- springboot repackage -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

上述執行打包後,會在target目錄下生成jar包和resources文件夾,將jar包和resources文件夾複製到同一目錄下java

執行運行jar包命令:java -jar xxx.jar 便可。spring

jar包分離lib和resources

<build>
        <!-- jar包名 -->
        <finalName>SearchIntegration</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <!-- 指定配置文件目錄,這樣jar運行時會去找到同目錄下的resources文件夾下查找 -->
                        <manifestEntries>
                            <Class-Path>resources/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <!-- 打包時忽略的文件(也就是不打進jar包裏的文件) -->
                    <excludes>
                        <exclude>**/**</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <!-- 複製資源文件 -->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <!-- 資源文件輸出目錄 -->
                            <outputDirectory>${project.build.directory}/resources</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- 分離lib  -->
            <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>
                            <!-- 依賴包輸出目錄 -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <excludeTransitive>false</excludeTransitive>
                            <stripVersion>false</stripVersion>
                            <!-- 依賴包的做用域 -->
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- springboot repackage -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layout>ZIP</layout>
                    <addResources>true</addResources>
                    <includes>
                        <include>
                            <groupId>non-exists</groupId>
                            <artifactId>non-exists</artifactId>
                        </include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

對上述依賴包的做用域說明:apache

  在定義項目的依賴項的時候,咱們能夠經過scope來指定該依賴項的做用範圍。scope的取值有compile、runtime、test、provided、system和import。
  compile:這是依賴項的默認做用範圍,即當沒有指定依賴項的scope時默認使用compile。compile範圍內的依賴項在全部狀況下都是有效的,包括運行、測試和編譯時。
  runtime:表示該依賴項只有在運行時纔是須要的,在編譯的時候不須要。這種類型的依賴項將在運行和test的類路徑下能夠訪問。
  test:表示該依賴項只對測試時有用,包括測試代碼的編譯和運行,對於正常的項目運行是沒有影響的。
  provided:表示該依賴項將由JDK或者運行容器在運行時提供,也就是說由Maven提供的該依賴項咱們只有在編譯和測試時纔會用到,而在運行時將由JDK或者運行容器提供。
  system:當scope爲system時,表示該依賴項是咱們本身提供的,不須要Maven到倉庫裏面去找。指定scope爲system須要與另外一個屬性元素systemPath一塊兒使用,它表示該依賴項在當前系統的位置,使用的是絕對路徑。springboot

對maven的一些路徑進行說明,這些都是內置屬性(Maven預約義能夠直接使用):maven

  ${basedir} 項目根目錄 
  ${version}表示項目版本;
  ${project.basedir}同${basedir};
  ${project.version}表示項目版本,與${version}相同;
  ${project.build.directory} 構建目錄,缺省爲target
  ${project.build.sourceEncoding}表示主源碼的編碼格式;
  ${project.build.sourceDirectory}表示主源碼路徑;
  ${project.build.finalName}表示輸出文件名稱;
  ${project.build.outputDirectory} 構建過程輸出目錄,缺省爲target/classeside

maven的一些命令:spring-boot

  mvn clean 把target目錄刪掉
  mvn clean compile 編譯項目至target目錄
  mvn clean package 編譯+打包 至target目錄
  mvn clean install 編譯+打包 至target目錄 而後安裝到本地倉庫
  mvn clean deploy 上傳jar包到遠程倉庫
  mvn javadoc:jar 打包javadoc文檔
若是須要將源碼上傳到遠程倉庫,則需deploy,而後再在pom文件中配置遠程倉庫的地址等信息。測試

 自動打包源碼

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>3.0.1</version>
    <configuration>
        <attach>true</attach>
    </configuration>
    <executions>
        <execution>
            <phase>compile</phase> <!--指定綁定的聲明週期階段-->
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>
相關文章
相關標籤/搜索