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

用Maven打成可執(zhí)行jar,包含maven依賴,本地依賴的操作

 更新時間:2020年08月18日 11:40:02   作者:子落+  
這篇文章主要介紹了用Maven打成可執(zhí)行jar,包含maven依賴,本地依賴的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

因為今天一個朋友學(xué)習(xí)過程中用到了maven項目編寫代碼,到了最后打包階段打的包不能運行,一時我也沒想起來具體操作步驟,后來我百度學(xué)習(xí)了一下,特此記錄下,以便后續(xù)自己查閱。

maven項目中不可避免的需要用到依賴jar,實際使用中有的能從maven倉庫找到,有的找不到,所以存在使用本地jar的情況,下面將對使用maven倉庫中jar,以及使用本地jar不同情況下打包可運行jar進行介紹。

情景一:使用maven依賴,所有的依賴都從maven倉庫查找下載,最終打包成可執(zhí)行jar,需要修改pom文件如下。

<!--使用maven依賴查找 json-lib -->
  <dependency>
   <groupId>net.sf.json-lib</groupId>
   <artifactId>json-lib</artifactId>
   <version>2.4</version>
   <classifier>jdk15</classifier>
  </dependency>

對應(yīng)修改pom文件,需指定程序入口,不然會報錯 xxxx-1.0-SNAPSHOT.jar中沒有主清單屬性

<!--情景一,制定程序入口即可。-->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
     <execution>
      <phase>package</phase>
      <goals>
       <goal>shade</goal>
      </goals>
      <configuration>
       <transformers>
        <transformer
          implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
         <mainClass>com.study.App</mainClass>
        </transformer>
       </transformers>
      </configuration>
     </execution>
    </executions>
   </plugin>

打包之后,即可通過 java -jar xxx.jar 運行,

package com.study;
import net.sf.json.JSONObject;

/**
 * Hello world!
 *
 */
public class App 
{
 public static void main( String[] args )
 {
  System.out.println( "Hello World!" );

  JSONObject json = new JSONObject();
  json.put("name","子落");
  System.out.println(json.toString());

 }
}

運行效果如下,

通過jar可以看出,是將引用的jar中對應(yīng)的文件解壓編譯到打包的jar中

最終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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

 <groupId>com.study</groupId>
 <artifactId>mvnstudy</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>jar</packaging>

 <name>mvnstudy</name>
 <url>http://www.example.com</url>

 <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
 </properties>

 <dependencies>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.11</version>
   <scope>test</scope>
  </dependency>

  <!--使用maven依賴查找 json-lib -->
  <dependency>
   <groupId>net.sf.json-lib</groupId>
   <artifactId>json-lib</artifactId>
   <version>2.4</version>
   <classifier>jdk15</classifier>
  </dependency>

 </dependencies>

 <build>
  <plugins>
   <!--情景一,制定程序入口即可。-->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
     <execution>
      <phase>package</phase>
      <goals>
       <goal>shade</goal>
      </goals>
      <configuration>
       <transformers>
        <transformer
          implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
         <mainClass>com.study.App</mainClass>
        </transformer>
       </transformers>
      </configuration>
     </execution>
    </executions>
   </plugin>

  </plugins>
 </build>
</project>

情景二,本地jar文件及maven依賴混用時打包。

首先介紹下,接下來使用的 testJar-1.0.jar,這個為我隨便編寫的一個jar文件,模擬本地jar使用場景。

package com.company;

public class Mp {

 public static void println(String str){
  System.out.println("Mp println = [" + str + "]");
 }
}

項目中使用

pom文件中引用

<!--使用本地jar-->
  <dependency>
   <groupId>testJar</groupId>
   <artifactId>junit</artifactId>
   <version>1.0</version>
   <scope>system</scope>
   <systemPath>${project.basedir}/lib/testJar-1.0.jar</systemPath>
  </dependency>

App代碼修改,

package com.study;
import com.company.Mp;
import net.sf.json.JSONObject;

/**
 * Hello world!
 *
 */
public class App 
{
 public static void main( String[] args )
 {
  System.out.println( "Hello World!" );

  JSONObject json = new JSONObject();
  json.put("name","子落");
  System.out.println(json.toString());

  Mp.println("子落.");
 }
}

這里打包時采用將所有本地jar也一起打包到一個可執(zhí)行jar中,這樣可以直接通過 java - jar xxx.jar運行。也可以通過先將本地jar注冊到maven倉庫,然后再打包,或者將本地jar復(fù)制到lib文件夾,然后通過在Manifest文件class-path中進行引用,這里主要講,將所有依賴打包到一個jar中。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
     <archive>
      <manifest>
       <mainClass>com.study.App</mainClass>
      </manifest>
     </archive>
    </configuration>
   </plugin>
   <plugin>
    <groupId>com.jolira</groupId>
    <artifactId>onejar-maven-plugin</artifactId>
    <version>1.4.4</version>
    <executions>
     <execution>
      <configuration>
       <attachToBuild>true</attachToBuild>
       <classifier>onejar</classifier>
      </configuration>
      <goals>
       <goal>one-jar</goal>
      </goals>
     </execution>
    </executions>
   </plugin>

最終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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

 <groupId>com.study</groupId>
 <artifactId>mvnstudy</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>jar</packaging>

 <name>mvnstudy</name>
 <url>http://www.example.com</url>

 <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
 </properties>

 <dependencies>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.11</version>
   <scope>test</scope>
  </dependency>

  <!--使用maven依賴查找 json-lib -->
  <dependency>
   <groupId>net.sf.json-lib</groupId>
   <artifactId>json-lib</artifactId>
   <version>2.4</version>
   <classifier>jdk15</classifier>
  </dependency>

  <!--使用本地jar-->
  <dependency>
   <groupId>testJar</groupId>
   <artifactId>junit</artifactId>
   <version>1.0</version>
   <scope>system</scope>
   <systemPath>${project.basedir}/lib/testJar-1.0.jar</systemPath>
  </dependency>
 </dependencies>

 <build>
  <plugins>
   <!--情景一,制定程序入口即可。-->
   <!--<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
     <execution>
      <phase>package</phase>
      <goals>
       <goal>shade</goal>
      </goals>
      <configuration>
       <transformers>
        <transformer
          implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
         <mainClass>com.study.App</mainClass>
        </transformer>
       </transformers>
      </configuration>
     </execution>
    </executions>
   </plugin>-->

   <!--情景二,使打包的jar包含lib文件夾中的本地jar-->
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
     <archive>
      <manifest>
       <mainClass>com.study.App</mainClass>
      </manifest>
     </archive>
    </configuration>
   </plugin>
   <plugin>
    <groupId>com.jolira</groupId>
    <artifactId>onejar-maven-plugin</artifactId>
    <version>1.4.4</version>
    <executions>
     <execution>
      <configuration>
       <attachToBuild>true</attachToBuild>
       <classifier>onejar</classifier>
      </configuration>
      <goals>
       <goal>one-jar</goal>
      </goals>
     </execution>
    </executions>
   </plugin>
  </plugins>
 </build>
</project>

運行效果如下,

最終編譯的文件如下

其中 mvnstudy-1.0-SNAPSHOT.one-jar.jar 既可直接運行的jar,里面包括之前引用的本地 testJar-1.0.jar 如下圖,

可以看到以上兩種方式,最終編譯的jar內(nèi)部文件是不一樣的,第一種是將引用依賴中jar對應(yīng)的文件解壓,然后編譯到最終的jar中,第二種是將引用的jar文件直接拿過來放入lib文件夾中,然后以套一層殼的方式運行,并不會對原jar文件進行解壓,具體使用哪種方式,還要看實際使用情況。

以上這篇用Maven打成可執(zhí)行jar,包含maven依賴,本地依賴的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot打成jar后獲取classpath下文件失敗的解決方案

    springboot打成jar后獲取classpath下文件失敗的解決方案

    這篇文章主要介紹了使用springboot打成jar后獲取classpath下文件失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 基于Hibernate中配置文件的學(xué)習(xí)(分享)

    基于Hibernate中配置文件的學(xué)習(xí)(分享)

    下面小編就為大家?guī)硪黄贖ibernate中配置文件的學(xué)習(xí)(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java日期時間操作的方法

    Java日期時間操作的方法

    這篇文章主要為大家詳細介紹了Java日期時間操作的一些方法,獲得Calendar,定義日期/時間的格式等,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Spring?Boot項目如何使用Maven打包并帶上依賴

    Spring?Boot項目如何使用Maven打包并帶上依賴

    在這篇博客中,介紹如何使用Maven將Spring?Boot項目及其依賴項打包成一個可執(zhí)行的jar文件。我們將使用Spring?Boot的spring-boot-maven-plugin插件來完成這個任務(wù),感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • Java中對象的克隆詳解

    Java中對象的克隆詳解

    這篇文章主要介紹了Java中對象的克隆詳解,Java中對象的復(fù)制分為淺復(fù)制與深復(fù)制的不同之處就在于深復(fù)制還會復(fù)制對象的引用對象,需要的朋友可以參考下
    2023-08-08
  • springboot 緩存@EnableCaching實例

    springboot 緩存@EnableCaching實例

    這篇文章主要介紹了springboot 緩存@EnableCaching實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java實現(xiàn)調(diào)用外部程序的示例代碼

    Java實現(xiàn)調(diào)用外部程序的示例代碼

    本文主要介紹了Java實現(xiàn)調(diào)用外部程序的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • mybatisplus下劃線駝峰轉(zhuǎn)換的問題解決

    mybatisplus下劃線駝峰轉(zhuǎn)換的問題解決

    在mybatis-plus中,下劃線-駝峰自動轉(zhuǎn)換可能導(dǎo)致帶下劃線的字段查詢結(jié)果為null,本文就來介紹一下mybatisplus下劃線駝峰轉(zhuǎn)換的問題解決,感興趣的可以了解一下
    2024-10-10
  • Spring boot項目redisTemplate實現(xiàn)輕量級消息隊列的方法

    Spring boot項目redisTemplate實現(xiàn)輕量級消息隊列的方法

    這篇文章主要給大家介紹了關(guān)于Spring boot項目redisTemplate實現(xiàn)輕量級消息隊列的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Spring boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解Java實踐之抽象工廠模式

    詳解Java實踐之抽象工廠模式

    抽象工廠模式用于產(chǎn)品族的構(gòu)建。抽象工廠是所有形態(tài)的工廠模式中最為抽象和最具一般性的一種形態(tài)。抽象工廠是指當(dāng)有多個抽象角色時使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產(chǎn)品的具體情況下,創(chuàng)建多個產(chǎn)品族中的產(chǎn)品對象
    2021-06-06

最新評論

五指山市| 高清| 晋城| 手机| 镇安县| 镇巴县| 固安县| 方正县| 荥阳市| 辽源市| 车致| 富顺县| 元江| 巨野县| 屯留县| 土默特左旗| 颍上县| 乃东县| 仙居县| 田阳县| 隆化县| 莲花县| 建湖县| 潜山县| 遵义市| 柯坪县| 承德市| 南宁市| 渝中区| 思茅市| 施秉县| 临沭县| 永嘉县| 杨浦区| 崇明县| 大英县| 雷波县| 巩义市| 浪卡子县| 化隆| 香河县|