Maven 生成打包可执行jar包的方法步骤

网友投稿 424 2022-11-23


Maven 生成打包可执行jar包的方法步骤

最近IDEA打可执行Jar包搞了三天,一直失败,好好学习一下Maven-assembly,在此记录一下

1. 需求

项目打包,满足以下要求:

1.整个项目打一个Zip包下面包括应用程序、应用程序依赖的jar包、说明文档

2.项目打的jar包可以执行不同类里的Main函数

3.项目源码打的jar包要与依赖的第三方jar包分开

4.项目里的执行脚本也要一块打包并进行分类

5.document目录下的readme.txt放在压缩包的根目录下,其他的还放在这个目录下

6.打的jar包去掉不需要的目录(文件)

2. 开发环境

IDEA-2016 Maven3.3.9

项目的目录结构:

3. Maven打包插件介绍

assembly翻译过来就是组装、装配的意思

Maven对项目打包常用的打包插件有三种,分别是:

插件

功能

maven-jar-plugin

maven 默认打包插件,用来创建 project jar

maven-shade-plugin

打可执行包,executable(fat) jar

maven-assembly-plugin

支持自定义打包方式

这里使用maven-jar-plugin和maven-assembly-plugin

项目目录:

每次找jar包之前先clean一下,不然的话IDEA会认为你的项目没有修改而不重新加载

另:配置文件的注释已经很详细了,这里就不另外再说明了

4. Maven使用maven-jar-plugin打可执行jar包

主要配置如下:

org.apache.maven.plugins

maven-jar-plugin

2.4

false

true

lib/

**/assembly/

完整配置见底部

5. Maven使用maven-assembly-plugin装需要打包的文件打进zip包

pom.xml下的主要配置如下:

org.apache.maven.plugins

maven-assembly-plugin

2.4

src/main/resources/assembly/package.xml

make-assembly

package

single

assembly插件的配置文件package.xml见底部

6. Maven生成可执行jar包及zip项目压缩包

双击执行mvn:package会生成两个包:可执行jar包和项目压缩包,因为assembly的装配配置的是绑定到这上面来的

双击执行assembly:single只生成项目压缩包

这里执行mvn:package

解压后的项目压缩包目录结构:

7. 执行jar包

解压缩生成的项目包

TestString的源码:

public class TestString {

public static void main(String[] args) {

String[] arr = new String[]{"aaa", "bbb", "ccc", "DDD", "EEE", "FFF"};

System.out.println(StringUtils.join(arr, "---"));

}

}

TestNumber的源码:

public class TestNumber {

public static void main(String[] args) {

Integer[] arr = new Integer[]{11, 22, 33, 44, 55, 66};

System.out.println(StringUtils.join(arr, "---"));

}

}

命令行运行生成的jar

java -classpath dong.jar com.dong.bigdata.TestString

java -classpath dong.jar com.dong.bigdata.TestNumber

运行结果:

8. pom.xml配置

包含两个文件:

pom.xml整体的配置

package.xml包含在pom.xml中,用于指定assembly装配时的配置

pom.xml文件:

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.dong

bigdata

jar

1.0-SNAPSHOT

bigdata

http://http://dong.com/.com

src/main/scripts/execute

document

src/main/resources

UTF-8

1.8

1.8

aliyun

http://maven.aliyun.com/nexus/content/groups/public

repo2

http://repo2.maven.org/maven2/

vQSjnVhHN

cloudera

https://repository.cloudera.com/artifactory/cloudera-repos/

scala-tools.org

Scala-Tools Maven2 RepositoryvQSjnVhHN

http://scala-tools.org/repo-releases

org.apache.commons

commons-lang3

3.4

dong

org.apache.maven.plugins

maven-jar-plugin

2.4

false

true

lib/

**/assembly/

org.apache.maven.plugins

maven-assembly-plugin

2.4

src/main/resources/assembly/package.xml

make-assembly

single

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.dong

bigdata

jar

1.0-SNAPSHOT

bigdata

http://http://dong.com/.com

src/main/scripts/execute

document

src/main/resources

UTF-8

1.8

1.8

aliyun

http://maven.aliyun.com/nexus/content/groups/public

repo2

http://repo2.maven.org/maven2/

vQSjnVhHN

cloudera

https://repository.cloudera.com/artifactory/cloudera-repos/

scala-tools.org

Scala-Tools Maven2 RepositoryvQSjnVhHN

http://scala-tools.org/repo-releases

org.apache.commons

commons-lang3

3.4

dong

org.apache.maven.plugins

maven-jar-plugin

2.4

false

true

lib/

**/assembly/

org.apache.maven.plugins

maven-assembly-plugin

2.4

src/main/resources/assembly/package.xml

make-assembly

single

9. package.xml文件

full

zip

false

lib

${project.build.directory}

*.jar

${projet.document.directory}

readme.*

${project.document.directory}

document

readme.*

${project.script.execute.directory}

*


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:maven 使用assembly 进行打包的方法
下一篇:详解maven的install的作用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~