目标:应用本身打成一个jar包,依赖的第三方包放到lib目录下
开发环境
OS: Windows 8.1
JDK: 1.7.0
开发工具: IntelliJ IDEA 13.1.1
步骤:
1. 首先看下maven项目的标准目录结构:
2. 看下项目pom.xml的配置,首先要配置maven-jar-plugin,把自己的代码编译打包成jar文件,然后配置maven-assembly-plugin,把整个项目打包成一个发布包。
- <build>
- <plugins>
- <!-- The configuration of maven-jar-plugin -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.4</version>
- <!-- The configuration of the plugin -->
- <configuration>
- <!-- Configuration of the archiver -->
- <archive>
- <!--
- 生成的jar中,不要包含pom.xml和pom.properties这两个文件
- -->
- <addMavenDescriptor>false</addMavenDescriptor>
- <!-- Manifest specific configuration -->
- <manifest>
- <!--
- 是否要把第三方jar放到manifest的classpath中
- -->
- <addClasspath>true</addClasspath>
- <!--
- 生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/
- -->
- <classpathPrefix>lib/</classpathPrefix>
- <!--
- 应用的main class
- -->
- <mainClass>dbRobot.BeanRobot</mainClass>
- </manifest>
- </archive>
- <!--
- 过滤掉不希望包含在jar中的文件
- -->
- <excludes>
- <exclude>${project.basedir}/xml/*</exclude>
- </excludes>
- </configuration>
- </plugin>
- <!-- The configuration of maven-assembly-plugin -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.4</version>
- <!-- The configuration of the plugin -->
- <configuration>
- <!-- Specifies the configuration file of the assembly plugin -->
- <descriptors>
- <descriptor>src/main/assembly/package.xml</descriptor>
- </descriptors>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
3. 再来看package.xml的配置
- <assembly>
- <id>bin</id>
- <!-- 最终打包成一个用于发布的zip文件 -->
- <formats>
- <format>zip</format>
- </formats>
- <!-- Adds dependencies to zip package under lib directory -->
- <dependencySets>
- <dependencySet>
- <!--
- 不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录
- -->
- <useProjectArtifact>false</useProjectArtifact>
- <outputDirectory>lib</outputDirectory>
- <unpack>false</unpack>
- </dependencySet>
- </dependencySets>
- <fileSets>
- <!-- 把项目相关的说明文件,打包进zip文件的根目录 -->
- <fileSet>
- <directory>${project.basedir}</directory>
- <outputDirectory>/</outputDirectory>
- <includes>
- <include>README*</include>
- <include>LICENSE*</include>
- <include>NOTICE*</include>
- </includes>
- </fileSet>
- <!-- 把项目的配置文件,打包进zip文件的config目录 -->
- <fileSet>
- <directory>${project.basedir}\src\main\config</directory>
- <outputDirectory>config</outputDirectory>
- <includes>
- <include>*.xml</include>
- <include>*.properties</include>
- </includes>
- </fileSet>
- <!-- 把项目的脚本文件目录( src/main/scripts )中的启动脚本文件,打包进zip文件的跟目录 -->
- <fileSet>
- <directory>${project.build.scriptSourceDirectory}</directory>
- <outputDirectory></outputDirectory>
- <includes>
- <include>startup.*</include>
- </includes>
- </fileSet>
- <!-- 把项目的脚本文件(除了启动脚本文件),打包进zip文件的script目录 -->
- <fileSet>
- <directory>${project.build.scriptSourceDirectory}</directory>
- <outputDirectory></outputDirectory>
- <includes>
- <exclude>startup.*</exclude>
- </includes>
- </fileSet>
- <!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 -->
- <fileSet>
- <directory>${project.build.directory}</directory>
- <outputDirectory></outputDirectory>
- <includes>
- <include>*.jar</include>
- </includes>
- </fileSet>
- </fileSets>
- </assembly>
4. 经过jar和assembly,最终得到一个可发布的zip文件,内容结构如下:
相关推荐
以上就是使用Maven打包成第三方JAR包且把pom依赖包打入的方法。通过这个方法打包的JAR包具有很高的可用性,开发者不需要手动处理复杂的依赖关系,只需简单地将JAR包部署到目标环境即可运行。希望本文内容能帮助到你...
这篇博客“eclipse 打包 jar 碰到的问题(包含第三方包)”主要讨论了在Eclipse中处理这种问题的方法。 首先,问题的症结在于如何正确地将项目依赖的第三方库包含到JAR文件中。通常,我们创建的Java项目会引用一些...
Fatjar,又称为“胖Jar”,指的是将所有依赖库(包括第三方jar包)一起打包到单个JAR文件中的方法。这样做可以使得最终用户无需担心类路径配置问题,只需双击运行这个“胖”JAR即可。 在MyEclipse和Eclipse中,打包...
`FatJar`是一个第三方插件,适用于`Eclipse`和`MyEclipse`,它的主要功能是帮助开发者将所有项目依赖的库文件(即第三方JAR包)打包进最终的可执行JAR中。这样,当用户运行这个单一的JAR文件时,不需要额外配置类...
"myeclipse7.5fatjar第三方包打包到压缩包"这个标题指的就是使用MyEclipse 7.5版本的集成开发环境,结合fatjar插件,将项目及其依赖的第三方库打包成一个压缩包的过程。 MyEclipse 7.5是一款功能强大的Java EE集成...
综上所述,打包可执行程序并包含第三方包是一项重要的软件工程实践,它涉及到多个方面,包括但不限于选择正确的打包工具、管理第三方依赖、保证代码质量以及确保程序在目标环境下稳定运行。虽然具体博文内容未知,但...
本文提供了SpringBoot使用Maven打包异常-引入外部jar的问题及解决方案,包括引入外部jar包、配置pom.xml文件和排除冲突的jar包等解决方案。这些解决方案可以帮助开发者解决SpringBoot使用Maven打包异常时引入外部jar...
通过修改`spring-boot-maven-plugin`的配置,可以排除不需要打包进jar的第三方jar包。可以按maven坐标排除,也可以按组ID排除。在父工程的`etcloud-parent`中定义插件配置,子工程引用父工程配置并可覆盖自定义设置...
- **Extract required libraries into generated JAR**:这个选项会将所有依赖的第三方库解压并合并到新的JAR文件中,使其成为一个自包含的可执行文件。 - **Package required libraries into generated JAR**:这...
在Java开发过程中,引入第三方JAR包是常见的操作,它能帮助我们快速利用已有的库功能,节省开发时间和精力。本篇文章将详细讲解如何在Java项目中导入并使用第三方JAR包,以及与之相关的工具和实践技巧。 首先,我们...
然而,在某些情况下,可能会遇到"第三方包导入冲突"的问题,这主要是因为两个或更多的库依赖于相同但版本不同的类或者方法,导致编译或运行时出错。本篇将深入探讨如何解决这类问题。 首先,当遇到包冲突时,一个...
在Java开发中,"fat jar"(也称为"uber jar")是一种打包方式,它将所有依赖库(包括第三方库)合并到一个单独的JAR文件中,使得开发者可以轻松地分发和运行整个应用程序,而无需关心项目的依赖关系。在本教程中,...
此外,还有其他的打包方法,比如使用 spring-boot-maven-plugin 插件在打 Jar 包时,会引入依赖包。 在生成的 JAR 文件中,我们可以使用 java -jar 命令来运行这个 JAR 包,输出结果将是“Hello World”。 使用 ...
当项目中需要依赖第三方库(如Jar包)时,理解如何在Ant中引入这些依赖至关重要。以下将详细解释如何在Ant构建文件中配置和使用第三方Jar包。 首先,让我们了解Ant的基本结构。一个Ant项目通常包含一个名为`build....
如果应用程序依赖于第三方库,那么在打包成JAR时也必须将这些依赖的第三方JAR包包含进去。在不恰当引用第三方JAR包的情况下,可能会遇到类找不到的错误。为了正确引用第三方JAR包,需要了解Java类加载器的工作机制...
本文档详细介绍了Thingsboard的项目框架、涉及的流程图、第三方包、设备连接协议、打包过程、日志管理、数据库结构以及前端技术概述,旨在帮助开发者更好地理解和使用Thingsboard。 ### 第一章 项目框架整理说明 ...
shade可以将第三方包中的类、资源和依赖项重命名,使得它们不会与其他包中的类、资源和依赖项冲突。 为什么需要shade 在项目中,可能会出现多个第三方包依赖项相同的类或资源,从而导致冲突问题。例如,在使用...
此外,Spring Boot Reference Guide还包括一个附录,列出了Spring Boot的配置属性、内嵌日志配置选项、构建系统插件和第三方包的兼容性等有用信息。 总的来说,Spring Boot Reference Guide是一个全面的指南,为...