Maven 入门 —— 创建打包脚本

三种打包插件

 
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)
那么在引入依赖的时候就出现了冲突
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值