前言
最近做了一個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服務中相同名稱的類,不然無法啓動成功;