Maven打包
最编程
2024-07-18 14:55:47
...
1、IDEA打包
1.1、File—》project Structure..—》Artifacts—》
1.2、点击+号,选择jar,from modules ...
1.3、构建
1.4、查看jar
1.5、执行
java -jar xx.jar
2、maven-jar-plugin打包
2.1、pom.xml
<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
<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
<?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、打包后结果
上一篇: Maven 打包和部署
下一篇: 常用的 maven 打包命令
推荐阅读
-
Maven 运行时分析冗余依赖问题
-
Idea-Maven 的设置文件 Disk Configuration-2.Setting.xml
-
打包用 Node.js 编写的程序的简单说明
-
Rollup:下一代 JavaScript 模块打包器
-
JavaWeb - Maven (4/8):Maven 坐标、想法集成 - 导入 Maven 项目(两种方法)
-
探索 xe-utils 工具库】不要再打包自己的工具库了,看看这里就够了。什么是 xe-utils?
-
JavaWeb - Maven (2/8):概述 - 介绍与安装(步骤、具体操作、测试)
-
JavaWeb - Maven(1/8):总体介绍(什么是 Maven、Maven 的作用、摘要)
-
IDEA 如何使用 maven 打包(界面和命令方式)
-
将 QT 应用打包到如意玲珑包装中