最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

maven插件maven-jar-plugin構(gòu)建jar文件的詳細(xì)使用

 更新時間:2024年02月20日 09:08:25   作者:老碼龍  
maven-jar-plugin插件時maven中最常用的插件,也是maven構(gòu)建Java程序執(zhí)行包或者依賴包的默認(rèn)插件,本文主要介紹了maven插件maven-jar-plugin構(gòu)建jar文件的詳細(xì)使用,具有一定的參考價值,感興趣的可以了解一下

前言

maven-jar-plugin插件時maven中最常用的插件,也是maven構(gòu)建Java程序執(zhí)行包或者依賴包的默認(rèn)插件,大部分情況下我們不需要對其進(jìn)行配置,但在特殊情況下,我們可以通過配置來定制我們的jar包。

一、使用方式

大部分情況下,我們的配置如下:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<version>2.4</version>
</plugin>

而且這里的版本號是可選的,如果不配置版本號,maven會自動去尋找最新的版本。

二、常用配置詳解

1.classesDirectory

這個表示class文件的目錄,默認(rèn)值是:${project.build.outputDirectory}也就是target目錄下的class目錄,當(dāng)然我們也可以指定其他目錄。

2.outputDirectory

表示jar文件的輸出目錄,默認(rèn)值是:${project.build.directory},就是target目錄,生成的jar文件就輸出到這里。

3.excludes

表示jar文件打包時,需要排除哪些文件,比如我們在開發(fā)時有個dev.properties文件,打包時我們就不需要了,可以這樣配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <excludes>
            <exclude>conf/**</exclude>
            <exclude>bin/**</exclude>
            <exclude>cache/**</exclude>
            <exclude>attachment/**</exclude>
            <exclude>dev.properties</exclude>
        </excludes>
    </configuration>
</plugin>

這里我們排除了部分文件夾和開發(fā)時用到的文件,在打包時不加入到j(luò)ar文件中。

4.includes

這個與excludes相反,就是把需要的文件在打包時加入到j(luò)ar文件中,具體配置可以參照excludes的配置。

5.archive

這個屬性配置很多,主要是用于定制化我們的jar包結(jié)構(gòu)以及對Manifest文件的定制化。下面我們用幾個實(shí)例來演示。

添加Implementation和Specification屬性

默認(rèn)情況下面Manifest文件結(jié)構(gòu)如下:

Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}

我們可配置下面屬性:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <archive>
      <manifest>
        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
      </manifest>
    </archive>
  </configuration>
</plugin>

這樣生成的Manifest如下:

Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}
Specification-Title: ${project.name}
Specification-Version: ${project.artifact.selectedVersion.majorVersion}.${project.artifact.selectedVersion.minorVersion}
Specification-Vendor: ${project.organization.name}
Implementation-Title: ${project.name}
Implementation-Version: ${project.version}
Implementation-Vendor: ${project.organization.name}

添加manifestEntries

這個屬性可以添加一下項(xiàng)目信息到j(luò)ar文件中。常用配置如下:

<configuration>
  <archive>
    <manifestEntries>
      <mode>prod</mode>
      <url>${project.url}</url>
    </manifestEntries>
  </archive>
</configuration>

生成的Manifest如下:

Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}
mode: prod
url: http://project.url.com

添加鍵值對屬性Manifest Sections

這個功能可以添加多個鍵值屬性,配置如下:

<archive>
    <manifestSections>
        <manifestSection>
            <name>value1</name>
            <manifestEntries>
                <id>key1</id>
            </manifestEntries>
        </manifestSection>
        <manifestSection>
            <name>value2</name>
            <manifestEntries>
                <id>key2</id>
            </manifestEntries>
        </manifestSection>
    </manifestSections>
</archive>

結(jié)果如下:

Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}
 
Name: value1
id: key1
 
Name: value2
id: key2

自定義manifest配置

可以根據(jù)下面的配置來定制化manifest文件的加載機(jī)制:

設(shè)置一個可執(zhí)行的jar文件

我們可以發(fā)布一個可執(zhí)行的jar文件,就是可以通過命令行來啟動一個jar。也可以把一個jar文件當(dāng)做依賴庫,提供給其他項(xiàng)目來使用。如果要發(fā)布一個可執(zhí)行的jar,配置如下:

<configuration>
  <archive>
    <manifest>
      <mainClass>com.test.Main</mainClass>
    </manifest>
  </archive>
</configuration>

這里com.test.Main必須要有一個main方法

精確設(shè)置Classpath

就是將所有的jar文件全部枚舉出來,配置如下:

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.11.0</version>
    </dependency>
  </dependencies>
</project>

Manifest生成結(jié)果如下:

Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}
Class-Path: commons-io-2.11.0.jar commons-lang-2.1.jar

注意這樣運(yùn)行這個jar文件時,需要保證Class-Path的依賴jar在目錄中保持平級。

根據(jù)目錄設(shè)置classpath

這里需要用到屬性classpathPrefix,配置如下:

<configuration>
  <archive>
    <manifest>
      <addClasspath>true</addClasspath>
      <classpathPrefix>lib/</classpathPrefix>
    </manifest>
  </archive>
</configuration>

Manifest生成結(jié)果如下:

Class-Path: lib/commons-io-2.11.0.jar lib/commons-lang-2.1.jar

注意這樣運(yùn)行這個jar文件時,需要保證lib目錄和執(zhí)行jar保持平級。

配置classpath的加載樣式

加載樣式意思是可以通過特定的配置來配置classpath的路徑,配置屬性是:classpathLayoutType

自定義加載樣式classpathLayoutType=custom

配置如下:

<configuration>
  <archive>
    <manifest>
      <addClasspath>true</addClasspath>
      <classpathLayoutType>custom</classpathLayoutType>
      <customClasspathLayout>lib/$${artifact.groupIdPath}/$${artifact.artifactId}-$${artifact.version}$${dashClassifier?}.$${artifact.extension}</customClasspathLayout>
    </manifest>
  </archive>
</configuration>

接入如下:

Class-Path: lib/commons-io/commons-io-2.11.0.jar lib/commons-lang/commons-lang-2.1.jar

maven風(fēng)格加載樣式classpathLayoutType=repository

我們也可以設(shè)置maven風(fēng)格的加載樣式,如果目標(biāo)機(jī)器上有maven庫,我們可以這樣設(shè)置:

<configuration>
  <archive>
    <manifest>
      <addClasspath>true</addClasspath>
      <classpathPrefix>${user.home}/.m2/repository</classpathPrefix>
      <classpathLayoutType>repository</classpathLayoutType>
    </manifest>
  </archive>
</configuration>

結(jié)果如下:

Class-Path: ${user.home}/.m2/repository/commons-io/commons-io-2.11.0.jar ${user.home}/.m2/repository/commons-lang/commons-lang/2.1/commons-lang-2.1.jar

這里的${user.home}會替換成你電腦上的絕對路徑

強(qiáng)制使用SNAPSHOT版本的依賴

有時我們依賴的jar包可能是SNAPSHOT版本的,默認(rèn)情況SNAPSHOT版本的庫文件是不會被加載的,這里可以使用useUniqueVersions來啟用,配置如下:

<configuration>
  <archive>
    <manifest>
      <useUniqueVersions>false</useUniqueVersions>
    </manifest>
  </archive>
</configuration>

這樣SNAPSHOT版本的jar依賴也會被加載。

加載外部的manifest文件

我們也可以將manifest編寫好,然后直接使用我們自己編寫的文件,配置如下:

<configuration>
  <archive>
    <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
  </archive>
</configuration>

這里就直接加載我們自己編寫的MANIFEST文件。

總結(jié)

與maven-jar-plugin相同的還有一個maven-war-plugin插件,用于將我們的程序打包成war格式的執(zhí)行包,也是maven默認(rèn)的打包工具。這個主要用于web項(xiàng)目。它的用法和maven-jar-plugin完全一樣,大家可以參照上面的使用。

到此這篇關(guān)于maven插件maven-jar-plugin構(gòu)建jar文件的詳細(xì)使用的文章就介紹到這了,更多相關(guān)maven-jar-plugin構(gòu)建jar文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(62)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(62)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • 詳解在Java中如何優(yōu)雅的停止線程

    詳解在Java中如何優(yōu)雅的停止線程

    線程,作為并發(fā)編程的基礎(chǔ)單元,允許程序同時執(zhí)行多個任務(wù),在Java中,線程可以理解為程序中的獨(dú)立執(zhí)行路徑,通過使用線程,開發(fā)者可以創(chuàng)建更加響應(yīng)靈敏、效率更高的應(yīng)用程序,本文小編將給大家介紹一下Java中如何優(yōu)雅的停止線程,需要的朋友可以參考下
    2023-11-11
  • SpringBoot定義過濾器、監(jiān)聽器、攔截器的方法

    SpringBoot定義過濾器、監(jiān)聽器、攔截器的方法

    本篇文章主要介紹了SpringBoot定義過濾器、監(jiān)聽器、攔截器的方法,具有一定的參考價值,有興趣的可以了解一下。
    2017-04-04
  • JAVA中簡單的for循環(huán)異常踩坑

    JAVA中簡單的for循環(huán)異常踩坑

    這篇文章主要為大家介紹了JAVA中簡單的for循環(huán)異常踩坑避雷詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Spring?AOP對嵌套方法不起作用的解決

    Spring?AOP對嵌套方法不起作用的解決

    這篇文章主要介紹了Spring?AOP對嵌套方法不起作用的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • RestTemplate發(fā)送HTTP?POST請求使用方法詳解

    RestTemplate發(fā)送HTTP?POST請求使用方法詳解

    這篇文章主要為大家介紹了RestTemplate發(fā)送HTTP?POST請求的使用方法詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • 使用ftpClient下載ftp上所有文件解析

    使用ftpClient下載ftp上所有文件解析

    最近項(xiàng)目需要寫個小功能,需求就是實(shí)時下載ftp指定文件夾下的所有文件(包括子目錄)到本地文件夾中,保留文件到目錄路徑不變。今天小編給大家分享使用ftpClient下載ftp上所有文件的方法,需要的的朋友參考下吧
    2017-04-04
  • 詳解java并發(fā)編程(2) --Synchronized與Volatile區(qū)別

    詳解java并發(fā)編程(2) --Synchronized與Volatile區(qū)別

    這篇文章主要介紹了Synchronized與Volatile區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • java后端返回?cái)?shù)據(jù)給前端時去除值為空或NULL的屬性、忽略某些屬性代碼示例

    java后端返回?cái)?shù)據(jù)給前端時去除值為空或NULL的屬性、忽略某些屬性代碼示例

    在Java開發(fā)中我們處理JSON數(shù)據(jù)時經(jīng)常會遇到空值(null)的情況,這篇文章主要給大家介紹了關(guān)于java后端返回?cái)?shù)據(jù)給前端時去除值為空或NULL的屬性、忽略某些屬性的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • SpringBoot使用ExceptionHandler做異常處理

    SpringBoot使用ExceptionHandler做異常處理

    這篇文章主要介紹了SpringBoot使用ExceptionHandler做異常處理,這篇文章通過多種方法案例來介紹該項(xiàng)技術(shù)的使用,需要的朋友可以參考下
    2021-06-06

最新評論

郓城县| 汉沽区| 彰武县| 渝北区| 阿尔山市| 莱西市| 兴业县| 谷城县| 兖州市| 郑州市| 舟曲县| 龙胜| 昌都县| 中江县| 久治县| 宕昌县| 莲花县| 靖宇县| 西丰县| 磐安县| 阆中市| 昌吉市| 崇仁县| 马龙县| 游戏| 兰西县| 钦州市| 报价| 宜都市| 西和县| 隆昌县| 黔东| 巢湖市| 汕头市| 泸溪县| 方山县| 乾安县| 芷江| 江源县| 华亭县| 得荣县|