`
conkeyn
  • 浏览: 1528939 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

maven打包成可执行的jar包(package a runnable jar)

    博客分类:
  • Java
 
阅读更多

第一步:利用maven-jar-plugin生成当前工程的jar,该jar包包含manifest的main-class和class-path参数。

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<version>2.6</version>
	<configuration>
		<archive>
			<manifest>
				<addClasspath>true</addClasspath>
				<classpathPrefix>lib/</classpathPrefix>
				<mainClass>com.zkteco.timecube.zkcloud.phoenix.core.App</mainClass>
			</manifest>
			<!-- 添加当前目录和子目录lib -->
			<manifestEntries>
				<Class-Path>. ./lib</Class-Path>
			</manifestEntries>
		</archive>
	</configuration>
</plugin>

 第二步:添加组装描述文件,assembly.xml

<?xml version="1.0" encoding="UTF-8"?>
<assembly 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/assembly-1.0.0.xsd">
	<id>package</id>
	<formats>
		<format>zip</format>
	</formats>
	<includeBaseDirectory>true</includeBaseDirectory>
	<fileSets>
		<fileSet>
			<directory>${project.build.directory}</directory>
			<outputDirectory>/</outputDirectory>
			<includes>
				<include>*.jar</include>
			</includes>
			<excludes>
				<exclude>*sources.jar</exclude>
			</excludes>
		</fileSet>
	</fileSets>
	<dependencySets>
		<dependencySet>
			<outputDirectory>lib</outputDirectory>
			<scope>runtime</scope>
		</dependencySet>
	</dependencySets>
</assembly>

 第三步:添加maven-assembly-plugin插件,不可以再配置maven-assembly-plugin的<manifest>标签,不然会覆盖maven-jar-plugin生成的manifes文件。

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-assembly-plugin</artifactId>
	<configuration>
		<appendAssemblyId>false</appendAssemblyId>
		<descriptors>
			<descriptor>src/assemble/package.xml</descriptor>
		</descriptors>
	</configuration>
	<executions>
		<execution>
			<id>make-assembly</id>
			<phase>package</phase>
			<goals>
				<goal>single</goal>
			</goals>
		</execution>
	</executions>
</plugin>

 生成的manifest.mf文件的class-path结果:

Class-Path: . ./lib  ./lib/slf4j-api-1.7.10.jar ./lib/slf4j-log4j12-1.7.10.jar ./lib/log4 j-1.2.17.jar ./lib/commons-lang3-3.3.2.jar

 由此可以看出<manifestEntries>标签先于<manifest>执行

 

分享到:
评论

相关推荐

    java打包为jar

    在Java开发过程中,将项目打包成可执行的JAR(Java Archive)文件是常见的操作,这使得代码可以方便地分发、部署和运行。本文将详细介绍如何将Java工程打包成可执行的JAR文件。 首先,确保你有一个完整的Java工程,...

    使用eclipse打jar包 可执行的jar

    在Java开发中,将项目打包成可执行的JAR(Java ARchive)文件是非常常见的需求,这使得我们可以方便地分发和运行程序。Eclipse作为一款强大的Java集成开发环境,提供了内置的功能来创建可执行的JAR包。以下是详细...

    java 中使用maven shade plugin 打可执行Jar包

    "Java 中使用 Maven Shade Plugin 打可执行 Jar 包" 概述:Maven Shade Plugin 是 Maven 的一个插件...Maven Shade Plugin 是一个功能强大且方便的插件,可以帮助开发者快速地将 Java 项目打包成一个可执行的 Jar 包。

    将多个jar包合并为一个jar包

    - 在Eclipse中,可以通过`Export` -&gt; `Java` -&gt; `Runnable JAR file`,然后选择`Package required libraries into generated JAR`选项来合并依赖。 - IntelliJ IDEA也有类似的功能,可以在`Artifacts`设置中配置。...

    Eclipse打包工具FATJAR

    在Java开发中,常常需要将程序打包成可执行的JAR文件,以便于分发和运行。然而,有些Java应用依赖于多个外部库,单纯使用JAR文件可能无法直接运行,因为缺少了必要的类库。这时,FATJAR插件便发挥了重要作用,它允许...

    MyEclipse或Eclipse打jar包插件+详细的使用教程

    2. **One-JAR**:这是一款独立的打包工具,可以将应用和其依赖打包成一个可执行的JAR。虽然不是IDE内的插件,但使用起来也很方便。 3. **Apache Maven**:如果你的项目是Maven管理的,可以使用Maven的`assembly`或`...

    Java打Jar包方法和实例

    Java打Jar包是Java开发过程中常见的一项操作,它将多个类文件、资源文件等打包成一个可执行的JAR(Java Archive)文件,方便分发、部署和运行。本篇文章将详细阐述Java打Jar包的方法,并通过实例进行演示。 1. **...

    创建jar并引入第三方包

    在Java开发过程中,将项目打包成JAR文件是一项常见的任务,尤其当需要分发或部署一个独立的应用程序时。在MyEclipse这样的集成开发环境中,这个过程可以通过几个简单步骤完成,同时还能方便地引入第三方库。本文将...

    eclipsse(5)支持4.4以上插件)-fatjar插件

    9. **其他打包工具对比**:Fat Jar与其他打包工具(如Apache Maven的assembly插件或shade插件)相比,可能在自动化和灵活性上稍显不足,但在简单的项目中,其易用性是一个很大的优点。 10. **持续集成**:如果你的...

    维基百科javaAPI----JWPL

    Runnable fatjars with built-in dependencies ("jar-with-depenencies.jar") can be found on Maven Central under: http://search.maven.org/#search|ga|1|tudarmstadt.ukp For more information about JWPL, ...

    第5组完整程序(0.02beta)

    开发者通常会使用像JAR(Java Archive)这样的格式来打包这些文件,便于分发、部署和执行。 在Java编程中,以下几个关键知识点是相关的: 1. **类与对象**:Java是面向对象的语言,所以程序是由类定义的,而类实例...

    面试.docx

    - `mvn jar:jar`:仅打包为 JAR 文件。 - `mvn eclipse:eclipse`:生成 Eclipse 工程文件。 3. **Linux 命令** - `cd`:改变当前工作目录。 - `ll`:列出目录中的文件,通常显示详细信息。 - `mv`:移动或...

    JAVA tantao

    13. **Java开发工具包(JDK)**:包含Java编译器javac、JVM以及开发工具,如jar工具用于打包和管理类库。 14. **Spring框架**:这是一个流行的Java EE应用程序框架,提供了依赖注入、AOP(面向切面编程)等功能,...

    GameUI.rar_Java_

    - 可能还有`.jar`文件,这是Java应用程序的可执行格式,包含了编译后的类和必要的资源。 5. **开发环境与编译运行**: - 开发者可能使用IntelliJ IDEA或Eclipse等集成开发环境(IDE)编写代码,利用它们的构建...

    毕业设计项目毕业设计项目

    1. **src**:存放Java源代码的目录,可能有多个包(package)来组织不同的功能模块。 2. **resources**:存储非代码资源,如配置文件、图片、音频、数据库连接字符串等。 3. **docs**:项目文档,包括需求分析、设计...

    LP1I3

    12. **Java应用程序的部署**:包括JAR文件打包、WAR文件(用于Web应用)以及Spring Boot的可执行JAR等。 以上只是Java编程中的一部分知识点,实际学习和使用Java时,还需要涉及更多高级主题,如反射、设计模式、...

    modaclouds-fg-report:填补差距报告生成器

    MODAClouds FG 记者填补差距报告生成器运行它 java -... 注意:在编译代码时,请在eclipse中做Export-&gt;Runnable JAR file-&gt;Package required libraries into generate JAR。 从 Maven 编译将报告缺少 font.xml 文件。

    最终的

    16. **编译与打包**: 项目可能使用Maven的`mvn compile`、`mvn package`命令进行编译和打包成JAR或WAR文件。 通过分析"ProyectoFinal-master",我们可以推测这是一个包含众多Java技术的综合性项目,开发者在其中...

    应用1

    6. **构建工具**:Maven和Gradle是两种流行的Java构建工具,它们负责编译源代码、打包成JAR或WAR文件,以及执行自动化测试。Maven使用约定优于配置的方式,而Gradle则提供了更大的灵活性。 7. **包(Package)管理*...

    SEP2:sep2项目的源代码

    12. **构建工具**:如Maven或Gradle负责构建项目,生成可执行的JAR或WAR文件。 要全面理解"SEP2"项目,我们需要查看源代码本身,分析其类结构、方法逻辑、使用的技术栈以及与其他系统的交互方式。同时,项目可能还...

Global site tag (gtag.js) - Google Analytics