通过maven管理jar,当工程是jar类型时,发布时无法将依赖的jar一起打成jar包,本文将解决这个问题,和大家分享讨论
第一步,首先在pom.xml文件中,添加maven-assembly-plugin插件,代码如下
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
assembly.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>
通过assembly.xml描述,我们可以将第三方依赖,统一打包到{artifactId}-jar-with-dependencies.jar 这个jar包,这样方便我们管理第三方依赖
第二步,通过maven的maven-jar-plugin插件,我们可以配置MANIFEST.MF中的Main-Class和Class-Path,声明程序入口和依赖包的路径,代码如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<!--程序入口-->
<mainClass>cn.creditease.loan.exchange.main.server.SpringRmiServer</mainClass>
<addClasspath>true</addClasspath>
<!--依赖的第三方包路径-->
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
第三步,新建一个文件夹,比如E:\test,将{artifactId}-jar-with-dependencies.jar和java -jar E:\test\{artifactId}.jar拷贝到test目录,在test目录下,新建一个lib目(<classpathPrefix>lib/</classpathPrefix>,放到lib目录下)和一个startup.bat文件,编辑startup.bat文件,添加 java -jar E:\test\{artifactId}.jar
最后,用压缩工具打开{artifactId}-jar-with-dependencies.jar,将里面所有的第三方jar全部拷贝到lib目录下,运行startup.bat文件,就可以运行!
分享到:
相关推荐
2. Maven打包:Maven的打包目标`package`会根据项目的打包类型(如jar、war)生成相应的文件。对于Java应用,通常是生成jar文件。你可以通过修改pom.xml中的<build><finalName>元素来定制生成的jar文件名。 3. ...
通过在POM中设置打包类型为`war`,并添加相关的插件和依赖,Maven能够自动构建出可部署的WAR文件。 3. **JAR工程**:对于非Web的微服务,我们可以创建JAR工程。Maven的`maven-jar-plugin`插件可以帮助我们将Java...
本篇文章将详细探讨如何在一个Spring Boot的Maven工程中集成并使用ProGuard进行代码混淆。 首先,让我们理解什么是代码混淆。代码混淆是指将源代码中的类名、方法名和变量名替换为无意义的简短名称,同时保持代码的...
### Maven 使用入门详解 ...通过以上介绍可以看出,Maven 作为一种强大的构建工具,不仅简化了 Java 项目的构建流程,还为开发者提供了丰富的功能,帮助团队高效地管理项目依赖、构建和发布过程。
Maven 的仓库可以分为三种类型:本地仓库、中央仓库和远程仓库。本地仓库是指本地磁盘上的一个文件夹,可以在 setting.xml 文件中配置。中央仓库是由 Maven 社区提供的仓库,包含了大量常用的库。远程仓库是开发人员...
Maven 工程是 Maven 管理的基本单位,根据不同的目标和需求,Maven 工程有以下几种类型: #### 1. POM 工程 POM 工程实际上是 Maven 的配置文件,它描述了项目的结构、依赖和其他元数据。POM.xml 文件是 Maven ...
- 创建Maven Web项目时,通常在Eclipse中通过New Project向导来进行,选择Maven项目类型,并定义项目的坐标和打包方式。 - 项目创建后,可以使用Maven命令来添加项目依赖包,这样可以自动下载并添加相应的jar包到...
- 构建:生成各种类型的输出,如JAR、WAR或EAR文件。 - 文档生成:创建Javadoc和项目网站。 - 报告生成:例如JUnit测试报告。 - 依赖管理:自动下载项目所需的所有依赖。 - SCM集成:与版本控制系统如Git、SVN...
- `<packaging>`:项目打包类型,如jar、war或pom(父工程常用)。 - `<name>`:项目的名称。 - `<description>`:项目描述。 - `<modules>`:包含的子模块列表。 - `<dependencyManagement>`:定义依赖的版本...
packaging定义了项目的最终输出类型,常见的类型有jar, war等。dependencies元素描述了项目依赖的其他模块。 ### Maven命令、生命周期、核心概念 Maven的核心概念之一是其生命周期。Maven生命周期定义了项目的构建...
- `mvn eclipse:eclipse`:将Maven项目转换为Eclipse工程,使Eclipse能够识别Maven的构建配置。 4. **清理**: - `mvn clean`:清除目标目录(`target`)中的所有构建产物,包括编译后的类、测试结果等。 5. **...
这意味着对于一个给定的项目类型(如jar, war等),Maven有一套默认的构建行为和目录结构。例如,源代码通常放在src/main/java目录下,资源文件放在src/main/resources下。通过聚合项目,这种约定可以扩展到所有子...
Maven2也考虑到:不同类型的项目需要拥有不同的目录结构。如创建web项目,可以使用命令: mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-...
常见的工程类型包括普通的Java应用、Android应用、OSGi bundle、Clojure项目、Web应用打包(WAR)等。通过不同的archetype选项,开发者能够快速搭建起相应的项目结构。 在构建过程中,Maven会根据项目POM文件中定义...
- **packaging**:项目的类型,默认为`jar`,还可以是`war`、`pom`等,决定了项目构建后的输出形式。 #### Maven的安装与配置 1. **下载与安装**: - 从Maven官网下载最新版本的Maven压缩包。 - 解压至指定目录...
Maven是Apache软件基金会的一个开源项目,作为一款优秀的项目构建工具,它能够帮助开发者有效地管理项目中的jar包及jar包之间的依赖关系,同时也支持项目的编译、测试、打包和发布等任务。 **为什么学习Maven?** ...
- `packaging`:项目类型,如`jar`、`war`等。 - `version`:项目版本号。 通过以上内容,我们可以了解到Maven作为一个项目管理工具的强大之处,它不仅能够简化构建过程,还能够在项目的生命周期管理、依赖管理和...
对于Web应用的开发,Maven提供了专门的架构类型: ``` mvn archetype:create -DgroupId=packageName -DartifactId=webappName -DarchetypeArtifactId=maven-archetype-webapp ``` 这里,`maven-archetype-webapp`...
- **构建支持**:Maven支持多种应用程序类型的构建,如JAR、WAR等,为每种类型提供了一套构建规则和工具集。 - **输出物管理**:项目构建产生的产物(如编译后的类文件、文档等)会被统一管理,并可以方便地被其他...