架构探险(第一天):maven的打包与发布
这里以一个生成二维码的demo为例子,测试如何通过idea打包,然后将jar包发布到maven的本地库。
idea新建一个项目,然后将项目上传到github,不会的点这里。
我的QRcode项目的地址点这里。
用maven命令打jar包之前说过了,现在谈谈怎么在idea里面打jar包,以及上传到本地maven库。
打jar包
直接用maven命令打出来的jar包不包含依赖,比如说我的QRcode项目使用了zxing,但是结果我打出来的jar包不含zxing,这样就很麻烦。
所以我们要用插件,将本项目所用的依赖一起打进jar包的插件,这里我们用的是maven-assembly-plugin
看一下我项目的pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.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">
<modelVersion>4.0.0</modelVersion>
<groupId>top.changelife</groupId>
<artifactId>QRcode</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
</dependencies>
<build>
<finalName>QRcode</finalName>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
如果所示,点开idea里面maven的操作视图,可以先clean一下,然后package打包,然后去target中看结果。会发现target中有两个jar包,一大一小,小的先不管,将大的拷贝到到你喜欢的目录下,用压缩软件打开看一下就会发现这里面包含了你依赖的jar包的所有class文件,这就说明成功了。
其实maven打包的插件有很多,所以各种pom里面的配置我也很头疼,虽然这里打包出来的jar包是两个,我也就忍了,以后有空再研究。
之前我都是用springboot打包的插件,那个在新建springboot项目的时候自己就带出来了,以至于我觉得所有的打包都是那样的不用自己配置,结果今天才知道不同的插件不同的效果,细思极恐啊。。。
发布到本地maven库
命令mvn install:install-file -Dfile=C:\android\QRcode.jar -DgroupId=top.changelife -DartifactId=QRcode -Dversion=1.0 -Dpackaging=jar
然后去.m2文件夹下面看结果:
然后在新的项目中引用:
<dependency>
<groupId>top.changelife</groupId>
<artifactId>QRcode</artifactId>
<version>1.0</version>
</dependency>
发布到maven中央库
我是按照这个博客流程一步一步走的,这里就不再复制轮子了。
虽然有点痛,不过第一次不都这样吗,终于算是把这个简单的jar包传到maven中央库上去了,在pom中配置:
<dependency>
<groupId>top.changelife</groupId>
<artifactId>QRcode</artifactId>
<version>1.0-RELEASES</version>
</dependency>
功能就一个,输入内容和路径,生成二维码,调用方式如下:
//QRcode.getQRcode(String content, String codePath);
QRcode.getQRcode("http://www.changelift.top","E:/a.jpg");
后期会继续完善,可以关注我的github地址https://github.com/351524388/QRcode