前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Maven打包

Maven打包

原创
作者头像
来自银河系的员程序
修改2022-01-24 10:15:59
1.3K0
修改2022-01-24 10:15:59
举报
文章被收录于专栏:Java学习中Java学习中

1、IDEA打包

1.1、File—》project Structure..—》Artifacts—》

1.2、点击+号,选择jar,from modules ...

1.3、构建

1.4、查看jar

1.5、执行

代码语言:javascript
复制
java -jar xx.jar

2、maven-jar-plugin打包

2.1、pom.xml

代码语言:javascript
复制
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>demo.HBaseStationImporter</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</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>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.2、上述配置,会将依赖打包成lib目录下

3、Maven Assembly plugin

3.1、pom.xml

代码语言:javascript
复制
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <!--<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>-->
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix></classpathPrefix>
                            <mainClass>demo.HBaseTemperatureImporter</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <descriptors>
                        <!-- 配置描述符文件 -->
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-zip</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

3.2、assembly.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<assembly
        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <!-- id 标识符,添加到生成文件名称的后缀符。如果指定 id 的话(这里指定的是项目的版本),目标文件则是 ${artifactId}-${id}.jar。【如terminal-dispatch-5.0.0.0.jar】 -->
    <id>${project.version}</id>

    <!-- 指定打包格式。maven-assembly-plugin插件支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式 -->
    <formats>
        <format>tar.gz</format>
        <format>zip</format>
    </formats>

    <!-- 指定打的包是否包含打包层目录(比如finalName是terminal-dispatch,当值为true,所有文件被放在包内的terminal-dispatch目录下,否则直接放在包的根目录下)-->
    <includeBaseDirectory>true</includeBaseDirectory>

    <!-- 指定将工程依赖的包打到包里的指定目录下 -->
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact> <!-- 指定打包时是否包含工程自身生成的jar包 -->
            <outputDirectory>lib</outputDirectory> <!-- 指定将这些依赖包打到包里lib目录下 -->
            <scope>runtime</scope> <!-- 用于管理依赖的部署,runtime表示只在运行时使用 -->
        </dependencySet>
    </dependencySets>

    <!-- 指定要包含的文件集,可以定义多个fileSet -->
    <fileSets>
        <fileSet>
            <directory>src/main/script/bin</directory> <!-- 指定归档文件(要打的jar包)要包含的目录(下的文件及文件夹) -->
            <outputDirectory>bin</outputDirectory> <!-- 指定要将当前目录(<directory>标签中的目录放在归档文件(要打的jar包)bin目录下) -->
            <includes>
                <include>*.sh</include>
                <include>*.bat</include>
            </includes>
            <fileMode>0755</fileMode> <!-- 设置文件 UNIX 属性,是一种读写权限 -->
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>resources</outputDirectory>
            <includes>
                <include>*_zh_CN.properties</include>
            </includes>
            <fileMode>0644</fileMode>
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>conf</outputDirectory>
            <includes>
                <include>*.xml</include>
                <include>log4j.properties</include>
                <include>application.properties</include>
            </includes>
            <fileMode>0644</fileMode>
        </fileSet>
        <fileSet>
            <directory>logs</directory>
            <outputDirectory>logs</outputDirectory>
            <includes>
                <include>*.log</include>
            </includes>
            <fileMode>0644</fileMode>
        </fileSet>
        <!--<fileSet>
            <directory>src/main/lib</directory>
            <outputDirectory>lib</outputDirectory>
            <includes>
                <include>libwrapper.so</include>
                <include>wrapper.jar</include>
            </includes>
            <fileMode>0755</fileMode>
        </fileSet>-->
    </fileSets>

    <!--<files>
        <file>
            <source>target/${project.artifactId}-${project.version}.zip</source>
            <outputDirectory>.</outputDirectory>
        </file>
    </files>-->

</assembly>

assembly插件的打包方式是通过descriptor(描述符)来定义的。Maven预先定义好的描述符有bin,src,project,jar-with-dependencies等。比较常用的是jar-with-dependencies,它是将所有外部依赖JAR都加入生成的JAR包中,比较傻瓜化。但要真正达到自定义打包的效果,就需要自己写描述符文件,格式为XML。下面是我们的项目中常用的一种配置。

3.3、打包后结果

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、IDEA打包
    • 1.1、File—》project Structure..—》Artifacts—》
      • 1.2、点击+号,选择jar,from modules ...
        • 1.3、构建
          • 1.4、查看jar
            • 1.5、执行
            • 2、maven-jar-plugin打包
              • 2.1、pom.xml
                • 2.2、上述配置,会将依赖打包成lib目录下
                • 3、Maven Assembly plugin
                  • 3.1、pom.xml
                    • 3.2、assembly.xml
                      • 3.3、打包后结果
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档