如何使用MAVEN打JAR包(直接使用)
使用MAVEN打JAR包
一、简单的方法:
首先在pom.xml里面添加:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.qunar.piao.data.integration.Boot</mainClass>
</manifest>
<!-- 需要执行的main -->
</archive>
</configuration>
</plugin>
</plugins>
</build>
然后执行:mvn assembly:assembly
最后执行:java -jar target/ticket-data-integration-0.0.1-SNAPSHOT-jar-with-dependencies.jar
二、执行任意main方法
两个类,Boot类:
package com.qunar.check.integration;
public class Boot {
public static void main(String[] args){
System.out.println("test xingxing");
}
}
Boot2类:
package com.qunar.check.integration;
public class Boot2 {
public static void main(String[] args){
System.out.println("test liqiu");
}
}
那么执行:
$ java -classpath target/check-jar-with-dependencies.jar com.qunar.check.integration.Boot2
test liqiu
$ java -classpath target/check-jar-with-dependencies.jar com.qunar.check.integration.Boot
test xingxing
两个main函数都可以执行
续:
如果你的项目包含Spring,那么打包可能就会遇到的麻烦,可以参考:
https://www.jb51.net/article/276778.htm
扩展:maven 使用assembly 进行打包
1. pom 中添加assembly 插件
要使用assembly 进项编译打包, 首先主要在pom 中的build中添加插件信息, 具体如图下所示:
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>class="lazy" data-src/main/java</sourceDirectory>
<resources>
<resource>
<directory>class="lazy" data-src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>***.properties</include>
</includes>
</resource>
<resource>
<directory>${profile.dir}</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<!-- compiler插件参数设置,指定编码 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<!-- 这个插件是关键 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- 这个是assembly 所在位置 -->
<descriptor>class="lazy" data-src/main/assembly/assembly.xml</descriptor>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2. 创建assembly文件夹和assembly.xml文件
创建assembly文件夹和assembly.xml文件, 这个样子创建主要是规范。
在pom 中已经介绍assembly.xml 位置。
<!-- 这个是assembly 所在位置 -->
<descriptor>class="lazy" data-src/main/assembly/assembly.xml</descriptor>
创建assembly.xml 文件后添加如下内容:
<assembly>
<formats>
<!--支持 zip,tar,tar.gz,tar.bz2,jar,dir,war 等 -->
<format>tar.gz</format>
<format>zip</format>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>class="lazy" data-src/main/resources</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
<fileSet>
<directory>${profile.dir}</directory>
<outputDirectory>conf</outputDirectory>
<!-- 表示的是包含下面格式的资源文件 -->
<includes>
<include>*.xml</include>
<include>*.properties</include>
<include>***.properties</include>
</includes>
<fileMode>0644</fileMode>
</fileSet>
<fileSet>
<directory>class="lazy" data-src/main/assembly/bin</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
fileMode 官方解释:
Similar to a UNIX permission, sets the file mode of the files included. THIS IS AN OCTAL VALUE. Format: (User)(Group)(Other) where each component is a sum of Read = 4, Write = 2, and Execute = 1. For example, the value 0644 translates to User read-write, Group and Other
上述的三个fileSet 分别是将resource 下的资源打包到config 目录下, 将assembly下的bin 启动相关脚本打包到bin 目录下, 将maven项目依赖的所有jar 包, 打包到lib 中。
具体结构如下图所示:
参考地址:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
到此这篇关于如何使用MAVEN打JAR包(直接使用)的文章就介绍到这了,更多相关maven打jar包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341