Maven工程打包jar的多种方式

目录
  • 1.一般的jar(不能运行)
    • 方式1:命令行方式
    • 方式2:鼠标操作
  • 2.可执行Jar
    • 方式1:SpringBoot框架 (依赖在jar中)
    • 方式2: 依赖包和项目包分离(依赖在外部目录lib)
    • 方式3:依赖包和项目在一个jar(非springboot项目)
  • 3. Scala项目打包
  • 4. groovy项目打包

Maven打包一般可以生成两种包一种是可以直接运行的包,一种是依赖包(只是编译包)。Maven默认打包时jar,如果需要修改其他类型。可以修改pom.xml

<packaging>jar/ear/ejb</packaging>

Maven工程默认引入的插件:

1.一般的jar(不能运行)

生成的jar只是一个编译包,并没有打包依赖jar包。通过控制台的编译日志可以看出来,方式使用maven-jar-plugin:2.4插件。

java编译插件,可以设置jdk的版本等(如果不设置使用默认,可以不设置)

<!-- java编译插件 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

方式1:命令行方式

控制台执行   mvn clean package

方式2:鼠标操作

Maven->Plugins->clean->package

2.可执行Jar

这种生成的jar一般可以直接通过java -jar 方式直接运行。

方式1:SpringBoot框架 (依赖在jar中)

该方式是使用spring-boot-maven-plugin插件打包。

第一步:pom.xml增加

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.4.0</version>
    <configuration>
        <fork>true</fork>
        <!--指定启动的入口,可以省略,springboot会自动查找启动类-->
        <mainClass>com.lx.buildjarpackage.BuildJarPackageApp</mainClass>
    </configuration>
</plugin>

第二步:控制台执行

mvn clean package  spring-boot:repackage

注意: 如果当前pom文件中指定parent(可选)

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
</parent>

控制台命令只需要执行

mvn clean package

 方式2: 依赖包和项目包分离(依赖在外部目录lib)

将依赖JAR包输出到lib目录方式(打包方式对于JAVA项目是通用的)。该方式需要引入maven-jar-plugin插件。

第一步:pom.xml增加

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>com.lx.buildjarpackage.BuildJarPackageApp</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

第二步:控制台执行

mvn clean dependency:copy-dependencies  -DoutputDirectory=target/lib package

注意: 如果简化控制台的执行命令,我们可以通过增加插件配置

<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>

然后控制台执行

mvn clean package

 方式3:依赖包和项目在一个jar(非springboot项目)

该方式使用maven-assembly-plugin插件,但是这种方式并不是把依赖的jar拷贝到最终的jar中,而是将依赖jar的class文件拷贝到最终的jar,所以这种方式会丢失一些资源文件,所以对于springboot的项目会启动失败。

第一步: pom.xml增加

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.5</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.lx.buildjarpackage.BuildJarPackageApp</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

第二步: 控制台执行

mvn clean  assembly:single

或者鼠标操作maven project(右边栏)->选择Plugins->选择assembly->点击assembly:assembly

总结:对于springboot项目只能使用方式1和方式2,才能正常启动。

3. Scala项目打包

第一步:pom.xml的build>plugins中增加

<plugin>
    <groupId>org.scala-tools</groupId>
    <artifactId>maven-scala-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
                    <goal>testCompile</goal>
                </goals>
        </execution>
    </executions>
    <configuration>
        <scalaVersion>${scala.version}</scalaVersion>
        <args>
            <arg>-target:jvm-1.5</arg>
        </args>
    </configuration>
</plugin>

第二步: 控制台执行

maven clean package

或者鼠标执行maven project(右边栏)->选择Lifecycle->点击package或install打包

4. groovy项目打包

第一步:pom.xml的build>plugins中增加

<plugin>
    <groupId>org.codehaus.gmavenplus</groupId>
    <artifactId>gmavenplus-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
            <goals>
                <goal>addSources</goal>
                <goal>addStubSources</goal>
                <goal>compile</goal>
                <goal>execute</goal>
            </goals>
        </execution>
    </executions>
</plugin>

第二步: 控制台执行

maven clean package

或者鼠标执行maven project(右边栏)->选择Lifecycle->点击package或install打包

到此这篇关于Maven工程打包jar的文章就介绍到这了,更多相关Maven打包jar内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Maven pom.xml 添加本地jar包依赖以及打包方法

    Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法: 1. 安装到本地仓库 第一种方法比较常规,适用于需要添加的jar包也是由maven项目导出,含有pom文件的时候.只需要将jar包安装到本地maven仓库下,然后添加依赖即可. (1)安装到本地仓库,执行以下命令(其中的-Dfile/-DgroupId/-DartifactId/-Dversion项根据pom文件内容填写): mvn install:install-file -Dfile=xxxxx.jar -Dg

  • maven springboot如何将jar包打包到指定目录

    目录 如何将jar包打包到指定目录 1.目的 2.修改pom 3.修改启动脚本 jar包外指定配置文件及原理 解决方案 运行 原理 如何将jar包打包到指定目录 今天分享一下springboot将jar包打包到指定目录下. 由于之前上线都是一个打包到一个jar,由于服务多了,1个包100多M,哪怕是小版本上线都需要重新上传jar包. 1.目的 将不常用的比如spring,druid等不常用打包到lib目录,这样每次上线不需要上传这些.第三方或者常改动的还打包到本身的jar包内,每次上线都会新打包

  • 使用maven如何将项目中的test代码打包进jar中

    目录 maven将项目的test代码打包进jar中 项目结构如下 需求 三步 maven打包跳过test 在pom.xml文件中添加插件 使用mvn命令带附加参数 maven将项目的test代码打包进jar中 项目结构如下 …/src/main/java/package/** <– application code …/src/test/java/package/** <– test code 需求 test中有一个包含main方法的主类TestMain.java,将main.test.全部依

  • Maven中利用assembly插件打包jar包

    在maven中有几种方法打包项目,在之前的一篇博客中[Java]打包Jar包并用脚本执行,已经介绍了怎么在没有maven插件的情况下,怎么打包项目,并执行的. 而本篇则是在上一篇文章[Maven]Maven系列(一)——环境安装配置和新建maven项目之后,总结一下怎么使用maven插件进行打包项目.maven中有多种插件提供了打包功能,分别是maven-jar-plugin(用来打包成jar包),maven-war-plugin(打包成war包).maven-assembly-plugin.这

  • maven打包成第三方jar包且把pom依赖包打入进来的方法

    添加此PLUGIN到项目的POM.XML中 <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.allen.capturewebdata.Main</mainClass> </mani

  • Maven 生成打包可执行jar包的方法步骤

    最近IDEA打可执行Jar包搞了三天,一直失败,好好学习一下Maven-assembly,在此记录一下 1. 需求 项目打包,满足以下要求: 1.整个项目打一个Zip包下面包括应用程序.应用程序依赖的jar包.说明文档 2.项目打的jar包可以执行不同类里的Main函数 3.项目源码打的jar包要与依赖的第三方jar包分开 4.项目里的执行脚本也要一块打包并进行分类 5.document目录下的readme.txt放在压缩包的根目录下,其他的还放在这个目录下 6.打的jar包去掉不需要的目录(文

  • Maven工程打包jar的多种方式

    目录 1.一般的jar(不能运行) 方式1:命令行方式 方式2:鼠标操作 2.可执行Jar 方式1:SpringBoot框架 (依赖在jar中) 方式2: 依赖包和项目包分离(依赖在外部目录lib) 方式3:依赖包和项目在一个jar(非springboot项目) 3. Scala项目打包 4. groovy项目打包 Maven打包一般可以生成两种包一种是可以直接运行的包,一种是依赖包(只是编译包).Maven默认打包时jar,如果需要修改其他类型.可以修改pom.xml <packaging>

  • 详解idea打包jar的多种方式

    这里总结出用IDEA打包jar包的多种方式,以后的项目打包Jar包可以参考如下形式: 用IDEA自带的打包形式 用Maven插件maven-shade-plugin打包 用Maven插件maven-assembly-plugin打包 用IDEA自带的打包方式: 打开IDEA的file -> Project Structure,进入项目配置页面.如下图: 点击Artifacts,进入Artifacts配置页面,点击 + ,选择如下图的选项. 进入Create JAR from Modules页面,

  • 图文详解Maven工程打jar包的N种方式

    目录 一.IDEA自带打包插件 二.maven插件打包 2.1 制作瘦包(直接打包,不打包依赖包) 2.2 制作瘦包和依赖包(相互分离) 2.3 制作胖包(项目依赖包和项目打为一个包) 2.4 制作胖包(transform部分自定义) 三.SpringBoot项目打包 四.Scala项目打包 五.groovy项目打包 总结 一.IDEA自带打包插件 内容:此种方式可以自己选择制作胖包或者瘦包,但推荐此种方式制作瘦包. 输出:输出目录在out目录下 流程步骤: 第一步: 依次选择 file->pr

  • maven工程中jar包瘦身的五种方法

    java项目中常用maven工具来进行工程管理,但经常遇到的一个问题是生成的jar包越来越大,编译一次工程越来越慢.怎么有效地去除冗余依赖,给jar包进行瘦身,是一项必备技能.下面介绍在maven工程中jar包瘦身五大法: 一.将环境中已包含的依赖包的scope设置为provided pom中依赖的部分包可能在你程序运行环境中已经包含,此时应该将依赖包的scope设置为provided.如protobuf包如在环境中已包含,则应设置为: <dependency> <groupId>

  • springboot maven 项目打包jar 最后名称自定义的教程

    maven 文件打包,输入 :package -Dmaven.test.skip=true 进行打包, 一般生成的jar 文件 名称是项目名+版本号这样的 如何在pom.xml 中加入finalname 属性,就可以获得稳定的jar 名称 <build> <finalName>pay</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId

  • Maven 项目生成jar运行时提示“没有主清单属性”

    新建了一个Maven的项目,mvn compile和mvn package后生成了jar文件,然后直接到target目录下去执行java -jar xxx.jar命令运行jar包时出现了"xxx.jar没有主清单属性"的错误提示. 根据我的经验,肯定是没有找到入口类(即main函数所在的类),在pom.xml里面加上入口类的配置就好了!第一次直接用maven来打包jar,记录一下. 修改pom.xml文件,添加如下配置项即可: <build> <plugins>

  • maven多模块工程打包部署的方法步骤

    一般maven多模块工程结构如下图,图中分为dao数据层和上层web层(当然还可以有service层),在进行多模块划分的时候,一般将dao层采用jar进行打包,web层进行war打包.在进行war包部署时,发现dao是以jar包形式存在于lib包目录下,如果在部署服务器上需要进行相关配置修改会比较麻烦.因此研究了下用maven进行合并打包的方法: 1.确保dao pom.xml中有以下配置 <resources> <resource> <directory>${bas

  • 详解Spring Boot使用Maven自定义打包方式

    前言:本文将告诉你如何将程序Jar与与依赖Jar及配置文件分离打包,以下列举了两种不同Maven打包方式,其打包效果一致! 一.第一种Maven打包方式,将jar及resources下全部配置文件,拷贝到指定目录: <!--配置项--><properties> <!--自定义配置--> <project.jar.output.directory>E:/IDEAFile/file-copy/target/project</project.jar.outp

  • Maven引用自定义jar包方式

    目录 Maven引用自定义jar包 概述 导入jar 在pom中引入依赖 加入maven-dependency-plugin插件 环境说明 自定义jar包发布到自己指定maven本地仓库 ①我要上传的jar包为:ipdatabase-1.0.jar ②找到本地安装maven ③在项目中引用 Maven引用自定义jar包 概述 在项目中用了一个在Maven中央仓库没有的第三方jar包,Maven中该如何依赖呢? 如果引入不好,启动项目时会报: java.lang.ClassNotFoundExce

随机推荐