java工程打成jar包 - 使用maven assembly插件打包及手动打包
在java工程打包的过程中遇到过不少问题,现在总结一下。一种是典型的maven工程打包,依赖的jar包全都在pom.xml中指定,这种方式打包很方便;另一种是依赖了本机jar包(不能通过pom.xml指定),我目前实践结果是只能手动进行打包。
1、依赖的jar包全由pom文件指定
使用maven的assembly插件进行打包,需要在pom文件中进行插件配置。基本配置如下,在终端中执行mvn package,即可在target目录生成名字为{artifactId}-jar-with-dependencies.jar 的jar文件,该jar文件中包含了所有依赖的jar包(解压后的)。
该插件还有很多其他的高级设置,每每总是搞错,后面等自己摸透了,会慢慢增加一些高级设置的说明。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.sym.storm.WordCountTopology</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
最终生成的jar包中的依赖的jar包都是解压后的,这是由jar-with-dependencies的默认设置决定的。若需要保持依赖的jar包不解压,则需要进行一下设置:
- 新建src/main/assembly目录,并在其中新建src.xml文件,并在该文件中写入如下内容:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>false</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.outputDirectory}</directory>
</fileSet>
</fileSets>
</assembly>
默认的unpack设置是true(即解压),只需要修改为false即可。
- 然后需要将之前pom文件中的descriptorRef替换为如下descriptor设置。再执行mvn package命令。解压生成的jar包,可看到依赖的jar包都是未解压的。
<descriptors>
<descriptor>jar-with-dependencies</descriptorRef>
</descriptors>
2、依赖本地jar包(非pom指定)
之前在网上搜了很多的教程,教程里也有很多是使用assembly插件来,但实践之后都未果,后来只能用最原始的手动导jar包的方式来实现。
- 用编辑器导成jar包(eclipse和intellij不同)。Main方法根据实际需求来指定。
- 修改MANIFEST.MF。MANIFEST.MF文件描述了jar包的相关信息,包括jar包的版本、创建人和类搜索路径等。如果是可执行jar包,会包含Main-Class属性,表明Main方法入口。Class-Path指定依赖的jar包,当前路径是jar包所在目录,若要引用当前目录下一个子目录中的jar包,使用以下格式:子目录/jar包名称,多个jar包之间用空格分隔,在任何平台上路径分割符都是'/'。
具体操作如下:在导出的jar包上右键,选择用WinRAR打开,进入META_INF目录,打开MANIFEST.MF文件,添加依赖的jar包的名字,名字之前用空格分隔,如
Class-Path: lib/***1.jar lib/***2.jar
java工程打成jar包 - 使用maven assembly插件打包及手动打包的更多相关文章
- 高版本 eclipse 如何安装 fatjar 插件以及使用 fatjar 将 Java 程序打成 Jar 包
高版本 eclipse 如何安装 fatjar 插件以及使用 fatjar 将 Java 程序打成 Jar 包 Eclipse Version: Neon.3 Release (4.6.3) Welc ...
- Eclipse中将java类打成jar包形式运行
记录一次帮助小伙伴将java类打成jar包运行 1.创建java project项目 file > new > project > java project 随便起一个项目名称,fi ...
- eclipse将引用了第三方jar包的java项目打成jar包
今天用java开发了一个项目,想要打成jar包,并在linux环境下运行.但是运行时引用的第三方jar包却显示classNotFind错误. 于是查了一下解决办法,在此贴出来,方便以后查阅. 用Ecl ...
- java项目打成jar包时引用了第三方jar,此时我们该如何解决呢
Web项目做多了,反而对单纯的java项目陌生了,今天我们在开发项目的过程中,碰到一个这样的需求:需要将java项目放到linux系统上跑起来,当然这个javaSE项目是带main方法的.我们知道在I ...
- java项目打成jar包使用
使用Eclipse打成jar包 1.创建项目hello 2.写java文件 package hell; import java.io.PrintStream; public class Hello { ...
- 将一个SpringBoot工程打成jar包并在控制台执行起来
JDK:1.8.0_212 IDE:STS4(Spring Tool Suit4 Version: 4.3.2.RELEASE) 工程下载:https://files.cnblogs.com/file ...
- java工程打jar包
下面记录一下打jar包的方法 对于含有第三方jar的工程需要写MANIFEST.MF文件,文件结构如下: Manifest-Version: 1.0 .jar .jar Main-Class: Sel ...
- spring boot工程打成JAR包到服务器上运行
只需在项目的pom.xml中加入下面插件 <build> <plugins> <plugin> <groupId>org.springframework ...
- 将Android工程打成jar包之后对资源的调用。
Android工程不能完整的打包成jar包.这个主要是R文件导致的,但是我们可以将除了资源文件中的所有东西都打到jar包中.Activity.View等等类. 提供jar包的同时,还需要提供资源文件. ...
随机推荐
- 安装MySQL数据库并开启远程访问
一.安装MySQL数据库 MySQL安装在系统盘下(C:\Program Files),方便系统备份. 1.双击安装程序,勾选“I accept the license terms”,点击“Next” ...
- 第十篇.6、python并发编程之IO模型
一 IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步.异步.阻塞.非阻塞 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非 ...
- CDN和浏览器缓存
1,CDN 旨在解决的最重要的问题是什么,我们称之为网络延迟,通过网络获取资源总是比从本地获取慢,无论服务器是在同一个局域网中还是位于世界的另一个角落,都是如此.这里的速度差异是 IT 行业的一个核心 ...
- ImportError: attempted relative import with no known parent package
或者检查所导包是否存在__init__.py文件,没有则添加上即可使当前文件夹变为包.
- node.js启动服务,不依赖第三方
好好学习,天天向上,懒惰.颓废让我越来越糟糕,所以分享一下,共同学习 纯node.js搭建一个小服务,下图为文件目录结构,很简单,很小 log文件是自动生成的 index.js文件 const url ...
- loj2318 「NOIP2017」宝藏[状压DP]
附带其他做法参考:随机化(模拟退火.爬山等等等)配合搜索剪枝食用. 首先题意相当于在图上找一颗生成树并确定根,使得每个点与父亲的连边的权乘以各自深度的总和最小.即$\sum\limits_{i}dep ...
- poj2279 Mr. Young's Picture Permutations[勾长公式 or 线性DP]
若干人左对齐站成最多5行,给定每行站多少个,列数从第一排开始往后递减.要求身高从每排从左到右递增(我将题意篡改了便于理解233),每列从前向后递增.每个人身高为1...n(n<=30)中的一个数 ...
- python和CSV
lines=[]; 表头数据 lines.append(list(retlist[0].keys())) 明细数据 for city in city_list: { lines.append(list ...
- 安装Go语言及环境的搭建
下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ 安装 Windows安装 此安装实例以 ...
- git的安装教程
团队开发的时候常要用到git来对代码进行管理,平时开发的时候也需要使用git来做一些事情,如给vue项目进行代码编译等等. 那下面我们开始 一.安装和配置环境 首先下载git安装包(去官网下载,htt ...