欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java application maven項目打自定義zip包實例(推薦)

 更新時間:2017年05月19日 09:09:39   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava application maven項目打自定義zip包實例(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1.配置pom.xml文件,添加build節(jié)點

<build>
    <!-- 輸出的包名 -->
    <finalName>p2p</finalName>


    <sourceDirectory>src/main/java</sourceDirectory>

    <resources>
      <!-- 控制資源文件的拷貝(默認復制到classes目錄,最后打進jar包) -->
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <!-- 排除外置的配置文件(運行時注釋上使IDE能讀取到配置文件;打包時放開注釋讓配置文件外置方便修改) -->
        <excludes>
          <exclude>config.properties</exclude>
        </excludes>
      </resource>
      <!-- 配置文件外置的資源(存放到config目錄,也是classpath路徑,下面會配置) -->
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>config.properties</include>
        </includes>
        <targetPath>${project.build.directory}/config</targetPath>
      </resource>
    </resources>

    <plugins>
      <!-- 設(shè)置編譯版本 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

      <!-- 打包jar文件時,配置manifest文件,加入lib包的jar依賴 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <!-- 清單文件,設(shè)置入口類和classpath -->
            <manifest>
              <mainClass>com.hdwang.Application</mainClass>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
            </manifest>
            <!-- 給清單文件添加鍵值對,增加classpath路徑,這里將config目錄也設(shè)置為classpath路徑 -->
            <manifestEntries>
              <Class-Path>config/</Class-Path>
            </manifestEntries>
          </archive>
          <classesDirectory>
          </classesDirectory>
        </configuration>
      </plugin>


      <!-- 拷貝依賴的jar包到lib目錄 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>
                ${project.build.directory}/lib
              </outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>


      <!-- 解決資源文件的編碼問題 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

      <!-- 自定義打zip包 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2.1</version>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

這個pom配置文件中注意紅色字體部分,這是實現(xiàn)配置文件外置的關(guān)鍵配置,思路就是配置文件不打進jar包,放置到外面,且將此文件夾設(shè)置為classpath,這樣子程序便可以通過根據(jù)classloader很方便地讀取到配置文件了。下面給出讀取配置文件的java代碼,在IDE運行時和打包后,代碼都不用修改,因為配置文件總能從classpath路徑中找到?。?!

工具包的maven信息

<dependency>
  <groupId>commons-configuration</groupId>
  <artifactId>commons-configuration</artifactId>
  <version>1.10</version>
</dependency>

2.新建maven-assembly-plugin插件的配置文件assembly.xml,內(nèi)容如下

<assembly>
  <id>bin</id>
  <formats>
    <format>zip</format>
  </formats>
  <!-- 使用assembly拷貝依賴包 -->
  <!--<dependencySets>-->
    <!--<dependencySet>-->
      <!--&lt;!&ndash; 是否包含自己(將項目生成的jar包也輸出到lib目錄) &ndash;&gt;-->
      <!--<useProjectArtifact>false</useProjectArtifact>-->
      <!--<outputDirectory>lib</outputDirectory>-->
    <!--</dependencySet>-->
  <!--</dependencySets>-->
  <fileSets>
    <!-- 從目標目錄拷貝文件去壓縮 -->
    <fileSet>
      <directory>target</directory>
      <includes>
        <include>*.jar</include>
      </includes>
      <outputDirectory>/</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>target/lib</directory>
      <outputDirectory>/lib</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>target/config</directory>
      <outputDirectory>/config</outputDirectory>
    </fileSet>

    <!-- 從源目錄拷貝文件去壓縮 -->
    <fileSet>
      <directory>src/main/run</directory>
      <includes>
        <include>*.sh</include>
        <include>*.cmd</include>
      </includes>
      <outputDirectory>/</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>src/main</directory>
      <includes>
        <include>ReadMe.txt</include>
      </includes>
      <outputDirectory>/</outputDirectory>
    </fileSet>
  </fileSets>
</assembly>

這個插件在package生命周期中運行,執(zhí)行mvn package或者mvn install便可觸發(fā)此插件的執(zhí)行。這里我注釋掉了拷貝依賴包的代碼,是因為在pom.xml文件中已經(jīng)配置了maven-dependency-plugin執(zhí)行這樣的操作,無須重復配置。fileSet可以配置需要拷貝壓縮的文件,directory路徑相對于項目根目錄,outputDirectory路徑相對于輸出目錄target,includes可以對拷貝的文件進行篩選。這里可以拷貝壓縮輸出目錄的文件,應(yīng)該就是因為此插件運行在程序編譯打包之后,這樣子就達到了我們自定義打包的要求:編譯->拷貝資源文件->項目打包->拷貝依賴的jar包-> assembly進行拷貝壓縮。然后使用打出的zip包就可以去部署發(fā)布了,解壓后就能運行。

3.程序打包流程示意圖

以上這篇java application maven項目打自定義zip包實例(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • jetbrain?fleet對標vscode實際操作

    jetbrain?fleet對標vscode實際操作

    Gradle是一個基于Apache Ant和Apache Maven概念項目自動化構(gòu)建開源工具,jetbrain家的fleet(已獲得預覽權(quán)限)直接對標vscode?,?fleet有望超過vscode嗎?今天我們實際操作下
    2021-12-12
  • Java 文件傳輸助手的實現(xiàn)(單機版)

    Java 文件傳輸助手的實現(xiàn)(單機版)

    這篇文章主要介紹了Java 文件傳輸助手的實現(xiàn)(單機版),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • SpringBoot整合SpringSecurity認證與授權(quán)

    SpringBoot整合SpringSecurity認證與授權(quán)

    在項目開發(fā)中,權(quán)限認證是很重要的,尤其是一些管理類的系統(tǒng),對于權(quán)限要求更為嚴格,本文主要介紹了SpringBoot整合SpringSecurity認證與授權(quán),感興趣的可以了解一下
    2023-11-11
  • Java經(jīng)典設(shè)計模式之責任鏈模式原理與用法詳解

    Java經(jīng)典設(shè)計模式之責任鏈模式原理與用法詳解

    這篇文章主要介紹了Java經(jīng)典設(shè)計模式之責任鏈模式,簡單說明了責任鏈模式的概念、原理,并結(jié)合實例形式分析了java實現(xiàn)責任鏈模式的具體用法與相關(guān)注意事項,需要的朋友可以參考下
    2017-08-08
  • springMVC中基于token防止表單重復提交方法

    springMVC中基于token防止表單重復提交方法

    本篇文章主要介紹了springMVC中基于token防止表單重復提交方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • java編程幾行代碼實現(xiàn)買菜自由

    java編程幾行代碼實現(xiàn)買菜自由

    這篇文章主要為大家介紹了java編程幾行代碼實現(xiàn)買菜自由,需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 解決logback的日志文件路徑問題

    解決logback的日志文件路徑問題

    這篇文章主要介紹了解決logback的日志文件路徑問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 6個必備的Java并發(fā)面試種子題目合集

    6個必備的Java并發(fā)面試種子題目合集

    并發(fā)是Java面試的經(jīng)常會考到的知識點,這篇文章主要為大家整理了6個必備的Java并發(fā)面試種子題目,文中的示例代碼簡潔易懂,需要的可以學習一下
    2023-07-07
  • 一文帶你搞懂Java中的數(shù)據(jù)流處理

    一文帶你搞懂Java中的數(shù)據(jù)流處理

    這篇文章主要為大家詳細介紹了Java中數(shù)據(jù)流處理的相關(guān)知識,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • 如何基于Jenkins構(gòu)建Jmeter項目

    如何基于Jenkins構(gòu)建Jmeter項目

    這篇文章主要介紹了如何基于Jenkins構(gòu)建Jmeter項目,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09

最新評論