Maven 入门 —— 创建打包脚本
程序员文章站
2022-03-20 09:05:36
...
三种打包插件
1、Maven-jar-plugin
maven-jar-plugin 的主要功能在于jar文件内的META-INF文件夹下,生成一个MANIFEST.MF文件,里面记录了可执行文件的一些相关配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<archive>
<manifest>
<addClassPath>true</addClassPath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>Start</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
- addClassPath 用于配置是否加载第三方库
- classpathPrefix 用于配置加载三发库的入口
- mainClass 用于配置程序的启动入口
可执行jar包和三方依赖包相互分离,需要新建lib目录来存放依赖包,通过maven-dependency-plugin将所需依赖的三方包打包到lib目录下。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
通过执行copy-dependencies 将依赖的第三方jar打包到<outputDirectory>路径下的文件夹中
2、maven-assembly-plugin
支持定制化的打包方式,
1、将不同的文件组合到不同的目录
2、打包成不同的格式
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<descriptors>
<!-- 引入assembly文件位置 -->
<descriptor>src/main/resources/assembly/package.xml</descriptor>
</descriptors>
</configuration>
<!-- 用于绑定行为 -->
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
在定制化的打包插件中,pom文件中主要作用在于引入assembly插件
<?xml version="1.0" encoding="utf-8" ?>
<assembly>
<id>full</id>
<formats>
<format>zip</format>
</formats>
<dependecySets>
<dependencySet>
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib/</outputDirectory>
</dependencySet>
</dependecySets>
<fileSets>
<fileSet>
<!--${project.basedir} 表示当前根目录路径 -->
<directory>${project.basedir}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>CheckFile</include>
</includes>
</fileSet>
<fileSet>
<!--${project.build.directory} 表示当前跟目录路径 -->
<directory>${project.build.directory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
id 标识符,添加到生成文件名称的后缀符
format 用于定义打包后的文件格式
dependencySet 定制工程依赖 jar 包的打包方式
----outputDirectory 将依赖包输出到的文件夹中
----useProjectArtifact 是否把项目添加到依赖文件夹下
fileSet 管理一组文件的存放位置
----directory 被管理的文件的路径地址
----outputDirectory 被管理文件在打包后的输出地址
----includes 需要被管理的文件
----excludes 不用被管理的文件
3、Maven-shade-plugin
打成一个胖jar包,即该jar内包含有包含有所有依赖的class文件,通过该种方式打出的jar包可能出现依赖间的冲突。
ex:A 依赖于 B ,B 依赖于 C(v1.0)
A 依赖于 C (v1.1)
那么在引入依赖的时候就出现了冲突
上一篇: yaml文件读取、写入
推荐阅读
-
shell脚本自动化创建虚拟机的基本配置之tomcat--mysql--jdk--maven
-
windows环境脚本一键拉git代码maven打包java项目
-
maven入门(四) eclipse创建maven项目
-
Maven 演示入门程序 创建导入Maven工程
-
IDEA使用Maven创建JavaWeb入门项目
-
MyBatis入门》创建maven项目》添加依赖
-
Maven入门教程(十七)-Maven多Moudle项目创建
-
荐 shell脚本自动化创建虚拟机的基本配置--tomcat--mysql--jdk--maven
-
maven打包zip包含bin下启动脚本的完整代码
-
在linux写一个shell脚本用maven git自动更新代码并且打包部署