当前位置: 首页 > 编程笔记 >

Maven打jar包的三种方式(小结)

南宫博简
2023-03-14
本文向大家介绍Maven打jar包的三种方式(小结),包括了Maven打jar包的三种方式(小结)的使用技巧和注意事项,需要的朋友参考一下

不包含依赖jar包

该方法打包的jar,不包含依赖的jar包,也没有指定入口类。

<build>
  <plugins>
    <plugin>
      <!-- 指定项目编译时的java版本和编码方式 -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.7.0</version>
      <configuration>
        <target>1.8</target>
        <source>1.8</source>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
  </plugins>
</build>

将依赖jar包输出到指定目录

该方法打包的jar,指定了入口类,可以直接使用java -jar project.jar执行,但是第三方依赖存在一个指定的外部目录下,迁移时需将jar和依赖目录一起迁移。

<build>
  <plugins>
    <plugin>
      <!-- 指定项目编译时的java版本和编码方式 -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.7.0</version>
      <configuration>
        <target>1.8</target>
        <source>1.8</source>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.1.0</version>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.netty.client.SignalClient</mainClass> <!-- 指定入口类 -->
            <addClasspath>true</addClasspath> <!-- 在jar的MF文件中生成classpath属性 -->
            <classpathPrefix>lib/</classpathPrefix> <!-- classpath前缀,即依赖jar包的路径 -->
          </manifest>
        </archive>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <version>3.1.1</version>
      <executions>
        <execution>
          <id>copy</id>
          <phase>install</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <!-- 指定依赖包的输出路径,需与上方的classpathPrefix保持一致 -->
            <outputDirectory>${project.build.directory}/lib</outputDirectory>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

将项目依赖和项目打成一个jar包

该方法打包的jar,指定了入口类,可以直接使用java -jar project.jar执行,并且将第三方依赖打到了项目jar包中。

<build>
  <plugins>
    <plugin>
      <!-- 指定项目编译时的java版本和编码方式 -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.7.0</version>
      <configuration>
        <target>1.8</target>
        <source>1.8</source>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>3.1.0</version>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.netty.client.SignalClient</mainClass> <!-- 指定入口类路径 -->
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef> <!-- jar包后缀,生成的jar包形式为:project-1.0-SNAPSHOT-jar-with-dependencies.jar -->
        </descriptorRefs>
      </configuration>
      <!-- 添加此项后,可直接使用mvn package | mvn install -->
      <!-- 不添加此项,需直接使用mvn package assembly:single -->
      <executions>
        <execution>
          <id>make-assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

到此这篇关于Maven打jar包的三种方式(小结)的文章就介绍到这了,更多相关Maven打jar包内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • null lib-ThirdPartyProject1.jar-ThirdPartyProject2.jar-ThirdPartyProject3.jar wrapperproject.jar-project1.jar-project2.jar-project3.jar

  • 本文向大家介绍maven+springboot打成jar包的方法,包括了maven+springboot打成jar包的方法的使用技巧和注意事项,需要的朋友参考一下 maven的命令: 1.mvn clean package -DskipTests:在项目目录下运行此命令,在target目录下生成jar包或war包。 2.mvn clean:清理项目生产的临时文件,一般是模块下的target目录 3

  • 一、简介 在将 Storm Topology 提交到服务器集群运行时,需要先将项目进行打包。本文主要对比分析各种打包方式,并将打包过程中需要注意的事项进行说明。主要打包方式有以下三种: 第一种:不加任何插件,直接使用 mvn package 打包; 第二种:使用 maven-assembly-plugin 插件进行打包; 第三种:使用 maven-shade-plugin 进行打包。 以下分别进行

  • 本文向大家介绍MySQL复制表的三种方式(小结),包括了MySQL复制表的三种方式(小结)的使用技巧和注意事项,需要的朋友参考一下 复制表结构及其数据 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表,所以新表不会有主键,索引。 只复制表结构 或者 注意:前一种方式是不会复制主键类型,索引的,而后一种方式是把旧表的所有字段类型都复制到新表。 只复制表数据 如

  • 问题内容: 我有一个旧的J2EE应用程序(J2EE 1.3),该应用程序打包到EAR中,并且在EAR中有WAR和EJB JAR。现在,其中一个EJB JAR需要引用一些第三方库JAR,那么打包那些JAR的最佳位置是什么?如何打包? 问题答案: 它们放在耳朵文件的根目录中,或者您可以创建一个 lib 目录来存储它们。任何需要引用它们的项目(EJB或WAR)都必须将它们包括在清单文件的 Class-P

  • 本文向大家介绍maven工程中jar包瘦身的五种方法,包括了maven工程中jar包瘦身的五种方法的使用技巧和注意事项,需要的朋友参考一下 java项目中常用maven工具来进行工程管理,但经常遇到的一个问题是生成的jar包越来越大,编译一次工程越来越慢。怎么有效地去除冗余依赖,给jar包进行瘦身,是一项必备技能。下面介绍在maven工程中jar包瘦身五大法: 一、将环境中已包含的依赖包的scop

  • 本文向大家介绍Python 脚本的三种执行方式小结,包括了Python 脚本的三种执行方式小结的使用技巧和注意事项,需要的朋友参考一下 1.交互模式下执行 Python,这种模式下,无需创建脚本文件,直接在 Python解释器的交互模式下编写对应的 Python 语句即可。 1)打开交互模式的方式: Windows下: 在开始菜单找到“命令提示符”,打开,就进入到命令行模式: 在命令行模式输入:

  • 本文向大家介绍iOS 拨打电话代码的三种方式,包括了iOS 拨打电话代码的三种方式的使用技巧和注意事项,需要的朋友参考一下  1,这种方式,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示 2,这种方式,打完电话后还会回到原来的程序,也会弹出提示,一般用这种 3,这种方式,也会回去到原来的程序里(注意这里的telprompt),也会弹出提示 以上所述是小编给大家介绍的iOS