前言
最近做了一个token申请和验证服务,需要将服务打包成jar包,其他项目使用maven依赖,直接使用;

实现:

1、将token服务在本机跑起,确保能够正常运行并调用;

2、将启动类和测试类(无用)删除掉;

springboot 打依赖包 springboot打包包含依赖包_jar


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文件:

springboot 打依赖包 springboot打包包含依赖包_maven_02


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服务启动类中配置:

springboot 打依赖包 springboot打包包含依赖包_spring_03

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);
    }

}

springboot 打依赖包 springboot打包包含依赖包_jar_04


指定我们的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扫描路径时要避免将其添加进去,不然会报错;

springboot 打依赖包 springboot打包包含依赖包_maven_05


2)在jartest服务中,我们依赖了token服务jar,所以我们在编写代码时,在controller和bean上,不要有与token服务中相同名称的类,不然无法启动成功;