maven 打包jar文件(含可执行jar包)
来源:互联网 发布:金庸群侠传x数据上限 编辑:程序博客网 时间:2024/06/06 02:39
maven打包jar文件
背景说明:
最近在研究docker,要打包一个可以独立执行的jar包,于是研究了很久,对于maven plugin还未深入研究,之后会再次补充此文章,先简单介绍一下常用的几种plugin和适用情况
项目说明
-spring framework
-spring boot
plugin 介绍
- spring-boot-maven-plugin
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin>
主要用于运行maven管理的spring-boot应用运行,cmd: mvn spring-boot:run;
另外,使用以下方式指定spring-boot-starter-parent,运行mvn package可以打包为可执行jar包,同时生成.origin结尾的工具包
<!--这里不能使用dependencyManagement的方式,会导致compiler不能正确使用jdk--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <relativePath/> </parent>
- maven compiler plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration></plugin>
作用是打包jar包,指定jdk版本等信息
- docker-maven-plugin
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- tag::plugin[] --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.3</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <!-- end::plugin[] --> </plugins> </build>
imageName指定了镜像的名字,本例为 waylau/docker-spring-boot
dockerDirectory指定 Dockerfile 的位置
resources是指那些需要和 Dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。本例,只需一个 jar 文件。
这个工具主要用来打包jar包同时生成docker的image,需要配合spring-boot-maven-plugin使用
- maven-jar-plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.**.**</mainClass> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> </manifest> </archive> </configuration> </plugin>
这个插件的作用是用来修改生成的清单文件 MANIFEST.MF,这个文件是jar包执行所必须的,但是仅使用该plugin则仅仅是在清单文件中添加了mainclass 和classpath,指定的lib目录实际为/target目录下的,所以需要在程序主目录下运行
mvn dependency:copy-dependencies -DoutputDirectory=target/lib
将所有的依赖jar打包到target/lib下面,这样jar包可以运行了,但必须和lib目录放在一个文件夹下面。
以下两个工具各有所长,不再介绍,对于spring boot的项目,仅需要一个spring-boot-maven-plugin就足够了,但是对于非spring-boot项目,需要结合多个plugin进行配置
- maven-assembly-plugin
- maven-shade-plugin
参考链接1
shade plugin
jar plugin
docker plugin
- maven 打包jar文件(含可执行jar包)
- maven打包可执行jar包
- maven 打包可执行jar包
- Maven 打包可执行jar文件
- maven 打包可执行 jar 文件
- 【Maven】maven打包生成可执行jar文件
- 【Maven】maven打包生成可执行jar文件
- MAVEN打包可执行的jar包
- Maven-----可执行Jar包打包插件
- java swing程序打包成可执行jar文件(含第三方jar包)
- maven 打包可执行jar
- maven打包可执行jar
- Maven 打包可执行jar
- maven 打包可执行jar
- Maven项目打包成可执行Jar文件
- maven打包生成可执行jar文件
- maven 打包成可执行的jar文件
- Maven项目打包成可执行Jar文件
- [Mapbox GL]点的动画效果
- js微信支付
- android studio 使用JNI开发
- iOS下载JPG图片会被压缩问题
- CDN和DNS的区别
- maven 打包jar文件(含可执行jar包)
- android4.4.2 短信广播变更
- JSON.parse()和JSON.stringify()
- dwz 框架参数传递
- 一些常见的AAC编解码库
- MySQL删除表中多余的重复记录,只保留一条记录
- 设计模式——访问者模式
- 怎么样使用yum来安装mysql
- 【ife】任务十一:移动Web页面布局实践