前言
最近做了一个token申请和验证服务,需要将服务打包成jar包,其他项目使用maven依赖,直接使用;
实现:
1、将token服务在本机跑起,确保能够正常运行并调用;
2、将启动类和测试类(无用)删除掉;
3、将pom配置文件中maven插件改为:
原先:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
修改为:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
4、执行maven的package进行打包,得到jar文件:
5、将jar文件发布到本地maven中;
mvn install:install-file -Dfile=E:\wonProjectSpace\testSpace\tokenserver\target\tokenserver-1.0.1.jar -DgroupId=com.tzwy.token -DartifactId=tokenserver -Dversion=1.0.1 -Dpackaging=jar
6、创建测试工程testjar,pom配置文件直接引用:
<dependency>
<groupId>com.tzwy.token</groupId>
<artifactId>tokenserver</artifactId>
<version>1.0.1</version>
</dependency>
7、在testjar服务启动类中配置:
package com.test.jartest;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan(basePackages ={"com.tzwy.tokenserver.moduler.mappers"})
@SpringBootApplication(scanBasePackages = {"com.tzwy.tokenserver","com.test.jartest"})
public class JartestApplication {
public static void main(String[] args) {
SpringApplication.run(JartestApplication.class, args);
}
}
指定我们的mapper扫描位置,可以是包;指定启动类扫描位置;
8、在application.properties 配置文件中写入配置,要知道我们依赖的jar文件与我们当前的testjar服务公用同一份配置文件;
#端口
server.port=8080
#上下文
server.servlet.context-path=/token
# 秘钥
mytoken.safety.secret=0dcac1b6ec8843488fbe90e166617e34
# 失效时间(天)
mytoken.valid.time=5
#druid数据源配置
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/db_user_auth?useUnicode=true&characterEncoding=utf-8
spring.datasource.druid.username=root
spring.datasource.druid.password=1234
#连接池参数,初始数、最大数、最小数、获取连接等待超时时间(毫秒)
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000
#mybatis&&通用Mapper
##配置别名扫描路径
mybatis.type-aliases-package=com.tzwy.tokenserver.moduler.entity
#如果不是纯注解 mapper接口对应的.xml文件
#mybatis.mapper-locations=classpath:mapper/*.xml
#通用mapper的所在接口名称 不只是包名
mapper.mappers=com.tzwy.tokenserver.moduler.mapper.MyMapper
#开启驼峰命名转换
mybatis.configuration.map-underscore-to-camel-case=true
#数据库
mapper.identity=MYSQL
##分页插件
# 指定数据库,不指定的话会默认自动检测数据库类型
pagehelper.helperDialect=mysql
# 是否启用分页合理化。 如果启用,当pagenum<1时,会自动查询第一页的数据,当pagenum>pages时,自动查询最后一页数据;不启用的,以上两种情况都会返回空数据
pagehelper.reasonable=true
# 默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。
pagehelper.supportMethodsArguments=true
# 用于从对象中根据属性名取值,
# 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值,
# 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero
pagehelper.params=count=countSql
#在格式:logging.level.Mapper类的包=debug 会在控制台打印出sql语句
logging.level.yiche.com.mapper=debug
注意坑:
1)我的token服务中使用的是通用mapper,所以会有一个myMapper泛型定义,我们在testjar启动类中指定mapper扫描路径时要避免将其添加进去,不然会报错;
2)在jartest服务中,我们依赖了token服务jar,所以我们在编写代码时,在controller和bean上,不要有与token服务中相同名称的类,不然无法启动成功;