结构整体优化
This commit is contained in:
@@ -16,6 +16,43 @@
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.micro.fast</groupId>
|
||||
<artifactId>boot-starter-util</artifactId>
|
||||
<version>${micro.fast.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-oauth2</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-lang</groupId>
|
||||
<artifactId>commons-lang</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-collections</groupId>
|
||||
<artifactId>commons-collections</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-beanutils</groupId>
|
||||
<artifactId>commons-beanutils</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
|
||||
+2
-9
@@ -2,9 +2,9 @@ package com.micro.fast.security.app.config.authorization2;
|
||||
|
||||
import com.micro.fast.security.app.config.component.MsAuthenticationFailureHandler;
|
||||
import com.micro.fast.security.app.config.component.MsAuthenticationSuccessHandler;
|
||||
import com.micro.fast.security.app.mobile.SmsCodeAuthenticationSecurityConfig;
|
||||
import com.micro.fast.security.app.master.SecurityConstants;
|
||||
import com.micro.fast.security.app.master.SecurityProperties;
|
||||
import com.micro.fast.security.app.mobile.SmsCodeAuthenticationSecurityConfig;
|
||||
import com.micro.fast.security.app.validate.code.ValidateCodeRepository;
|
||||
import com.micro.fast.security.app.validate.code.filter.ValidateCodeFilter;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -13,7 +13,6 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
|
||||
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
|
||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||
import org.springframework.social.security.SpringSocialConfigurer;
|
||||
|
||||
/**
|
||||
* OAuth2协议标准服务提供实现配置类,资源服务器的配置
|
||||
@@ -43,8 +42,6 @@ public class AuthorizationResourceConfig extends ResourceServerConfigurerAdapter
|
||||
@Autowired
|
||||
private SmsCodeAuthenticationSecurityConfig smsCodeAuthenticationSecurityConfig;
|
||||
|
||||
@Autowired
|
||||
private SpringSocialConfigurer springSocialConfigurer;
|
||||
|
||||
@Autowired
|
||||
private ValidateCodeRepository validateCodeRepository;
|
||||
@@ -79,9 +76,7 @@ public class AuthorizationResourceConfig extends ResourceServerConfigurerAdapter
|
||||
, SecurityConstants.GET_VALIDATE_CODE_URI
|
||||
, SecurityConstants.LOGIN_PAGE
|
||||
, DRUID
|
||||
, securityProperties.getBrowser().getHtml()
|
||||
//用户注册或绑定的页面
|
||||
, securityProperties.getBrowser().getSignUpUrl()
|
||||
, "处理用户的注册绑定请求的url"
|
||||
,"/social/signUp"
|
||||
)
|
||||
@@ -95,8 +90,6 @@ public class AuthorizationResourceConfig extends ResourceServerConfigurerAdapter
|
||||
.csrf().disable()
|
||||
//应用短信验证码登录的逻辑
|
||||
.apply(smsCodeAuthenticationSecurityConfig)
|
||||
.and()
|
||||
//应用springSocial的配置,在接收到特殊的请求的时候进行社交登录.例如 /auth/qq 其中/auth是默认的前缀,qq是providerId
|
||||
.apply(springSocialConfigurer);
|
||||
.and();
|
||||
}
|
||||
}
|
||||
|
||||
+1
-6
@@ -1,7 +1,6 @@
|
||||
package com.micro.fast.security.app.config.component;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.micro.fast.security.core.browser.constant.LoginType;
|
||||
import com.micro.fast.security.app.master.SecurityProperties;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -41,14 +40,10 @@ public class MsAuthenticationFailureHandler extends SimpleUrlAuthenticationFailu
|
||||
, HttpServletResponse httpServletResponse
|
||||
, AuthenticationException e)
|
||||
throws IOException, ServletException {
|
||||
//根据配置参数判断身份认证失败后的返回类型进行响应
|
||||
if (LoginType.JSON.equals(securityProperties.getBrowser().getLoginType())){
|
||||
//根据配置参数判断身份认证失败后的返回类型进行响应
|
||||
log.info("failure");
|
||||
httpServletResponse.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
|
||||
httpServletResponse.setContentType("application/json;charset=UTF-8");
|
||||
httpServletResponse.getWriter().write(objectMapper.writeValueAsString(e));
|
||||
}else{
|
||||
super.onAuthenticationFailure(httpServletRequest,httpServletResponse,e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-40
@@ -1,8 +1,13 @@
|
||||
package com.micro.fast.security.app.master;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author lsy
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class OAuth2ClientProperties {
|
||||
private String clientId;
|
||||
|
||||
@@ -13,44 +18,4 @@ public class OAuth2ClientProperties {
|
||||
private String authorizedGrantTypes;
|
||||
|
||||
private String scopes;
|
||||
|
||||
public String getClientId() {
|
||||
return clientId;
|
||||
}
|
||||
|
||||
public void setClientId(String clientId) {
|
||||
this.clientId = clientId;
|
||||
}
|
||||
|
||||
public String getClientSecret() {
|
||||
return clientSecret;
|
||||
}
|
||||
|
||||
public void setClientSecret(String clientSecret) {
|
||||
this.clientSecret = clientSecret;
|
||||
}
|
||||
|
||||
public int getAccessTokenValiditySeconds() {
|
||||
return accessTokenValiditySeconds;
|
||||
}
|
||||
|
||||
public void setAccessTokenValiditySeconds(int accessTokenValiditySeconds) {
|
||||
this.accessTokenValiditySeconds = accessTokenValiditySeconds;
|
||||
}
|
||||
|
||||
public String getAuthorizedGrantTypes() {
|
||||
return authorizedGrantTypes;
|
||||
}
|
||||
|
||||
public void setAuthorizedGrantTypes(String authorizedGrantTypes) {
|
||||
this.authorizedGrantTypes = authorizedGrantTypes;
|
||||
}
|
||||
|
||||
public String getScopes() {
|
||||
return scopes;
|
||||
}
|
||||
|
||||
public void setScopes(String scopes) {
|
||||
this.scopes = scopes;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-16
@@ -1,9 +1,14 @@
|
||||
package com.micro.fast.security.app.master;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* aouth2属性配置
|
||||
* @author lsy
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class OAuth2Properties {
|
||||
|
||||
private OAuth2ClientProperties[] clients = new OAuth2ClientProperties[]{};
|
||||
@@ -11,20 +16,4 @@ public class OAuth2Properties {
|
||||
private String jwtSigningKey = "msjwt";
|
||||
|
||||
private String storeType = "jwt";
|
||||
|
||||
public String getJwtSigningKey() {
|
||||
return jwtSigningKey;
|
||||
}
|
||||
|
||||
public void setJwtSigningKey(String jwtSigningKey) {
|
||||
this.jwtSigningKey = jwtSigningKey;
|
||||
}
|
||||
|
||||
public OAuth2ClientProperties[] getClients() {
|
||||
return clients;
|
||||
}
|
||||
|
||||
public void setClients(OAuth2ClientProperties[] clients) {
|
||||
this.clients = clients;
|
||||
}
|
||||
}
|
||||
|
||||
-5
@@ -35,9 +35,4 @@ public interface SecurityConstants {
|
||||
* 获取验证码请求的前缀
|
||||
*/
|
||||
String GET_VALIDATE_CODE_PREFIX = "/code/";
|
||||
|
||||
/**
|
||||
* session失效的处理地址
|
||||
*/
|
||||
String DEFAULT_SESSION_INVALID_URL = "/ms-session-invalid.html";
|
||||
}
|
||||
|
||||
+4
-53
@@ -1,73 +1,24 @@
|
||||
package com.micro.fast.security.app.master;
|
||||
|
||||
import com.micro.fast.security.core.browser.config.param.BrowserProperties;
|
||||
import com.micro.fast.security.app.validate.code.config.param.ValidateCodeProperties;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* 用于从application.yml配置文件中加载以ms.security为前缀的配置属性, ms spring security 配置参数
|
||||
* @author lsy
|
||||
*/
|
||||
@ConfigurationProperties(prefix = "ms.security")
|
||||
@Configuration
|
||||
@Getter
|
||||
@Setter
|
||||
public class SecurityProperties {
|
||||
/**
|
||||
* 浏览器身份认证配置
|
||||
* 对带有校验注解的对象进行属性校验
|
||||
*/
|
||||
@Valid
|
||||
private BrowserProperties browser = new BrowserProperties();
|
||||
|
||||
private ValidateCodeProperties code = new ValidateCodeProperties();
|
||||
|
||||
private Boolean createRememberTable = true;
|
||||
|
||||
|
||||
|
||||
private SessionProperties session = new SessionProperties();
|
||||
|
||||
private OAuth2Properties oauth2 = new OAuth2Properties();
|
||||
|
||||
public SessionProperties getSession() {
|
||||
return session;
|
||||
}
|
||||
|
||||
public void setSession(SessionProperties session) {
|
||||
this.session = session;
|
||||
}
|
||||
|
||||
public Boolean getCreateRememberTable() {
|
||||
return createRememberTable;
|
||||
}
|
||||
|
||||
public void setCreateRememberTable(Boolean createRememberTable) {
|
||||
this.createRememberTable = createRememberTable;
|
||||
}
|
||||
|
||||
public BrowserProperties getBrowser() {
|
||||
return browser;
|
||||
}
|
||||
|
||||
public void setBrowser(BrowserProperties browser) {
|
||||
this.browser = browser;
|
||||
}
|
||||
|
||||
public ValidateCodeProperties getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(ValidateCodeProperties code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public OAuth2Properties getOauth2() {
|
||||
return oauth2;
|
||||
}
|
||||
|
||||
public void setOauth2(OAuth2Properties oauth2) {
|
||||
this.oauth2 = oauth2;
|
||||
}
|
||||
}
|
||||
|
||||
-47
@@ -1,47 +0,0 @@
|
||||
package com.micro.fast.security.app.master;
|
||||
|
||||
/**
|
||||
* session处理的配置
|
||||
* @author lsy
|
||||
*/
|
||||
public class SessionProperties {
|
||||
/**
|
||||
* 同一个系统中的最大session数,默认1
|
||||
*/
|
||||
private int maximumSessions = 1;
|
||||
|
||||
/**
|
||||
* 达到最大session时,是否阻止新的登录请求,默认为false,不阻止,新的登录将老的登录
|
||||
* 失效掉
|
||||
*/
|
||||
private boolean maxSessionPreventsLogin = false;
|
||||
|
||||
/**
|
||||
* session失效的时候跳转的地址
|
||||
*/
|
||||
private String sessionInvalidUrl = SecurityConstants.DEFAULT_SESSION_INVALID_URL;
|
||||
|
||||
public int getMaximumSessions() {
|
||||
return maximumSessions;
|
||||
}
|
||||
|
||||
public void setMaximumSessions(int maximumSessions) {
|
||||
this.maximumSessions = maximumSessions;
|
||||
}
|
||||
|
||||
public boolean isMaxSessionPreventsLogin() {
|
||||
return maxSessionPreventsLogin;
|
||||
}
|
||||
|
||||
public void setMaxSessionPreventsLogin(boolean maxSessionPreventsLogin) {
|
||||
this.maxSessionPreventsLogin = maxSessionPreventsLogin;
|
||||
}
|
||||
|
||||
public String getSessionInvalidUrl() {
|
||||
return sessionInvalidUrl;
|
||||
}
|
||||
|
||||
public void setSessionInvalidUrl(String sessionInvalidUrl) {
|
||||
this.sessionInvalidUrl = sessionInvalidUrl;
|
||||
}
|
||||
}
|
||||
@@ -88,6 +88,12 @@
|
||||
<groupId>org.mybatis.generator</groupId>
|
||||
<artifactId>mybatis-generator-core</artifactId>
|
||||
</dependency>
|
||||
<!--配置提示-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<!--测试-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
||||
+3
-3
@@ -1,5 +1,7 @@
|
||||
package com.micro.fast.common;
|
||||
|
||||
import com.micro.fast.common.config.param.MybatisParamConfig;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -12,7 +14,5 @@ import org.springframework.context.annotation.Configuration;
|
||||
@Configuration
|
||||
@ComponentScan(basePackages = {"com.micro.fast.common"})
|
||||
public class CommonApplication {
|
||||
// public static void main(String[] args) {
|
||||
// SpringApplication.run(CommonApplication.class, args);
|
||||
// }
|
||||
|
||||
}
|
||||
+4
-23
@@ -1,5 +1,7 @@
|
||||
package com.micro.fast.common.config.param;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -18,6 +20,8 @@ import java.util.ArrayList;
|
||||
@AutoConfigureBefore(com.micro.fast.common.config.SqlSessionFactoryConfig.class)
|
||||
@ConfigurationProperties(prefix = "mybatis")
|
||||
@Validated
|
||||
@Getter
|
||||
@Setter
|
||||
public class MybatisParamConfig {
|
||||
/**
|
||||
* pojo所在的包
|
||||
@@ -34,27 +38,4 @@ public class MybatisParamConfig {
|
||||
*/
|
||||
private ArrayList<String> pageHelperProperties;
|
||||
|
||||
public String getTypeAliasesPackage() {
|
||||
return typeAliasesPackage;
|
||||
}
|
||||
|
||||
public void setTypeAliasesPackage(String typeAliasesPackage) {
|
||||
this.typeAliasesPackage = typeAliasesPackage;
|
||||
}
|
||||
|
||||
public String getMappers() {
|
||||
return mappers;
|
||||
}
|
||||
|
||||
public void setMappers(String mappers) {
|
||||
this.mappers = mappers;
|
||||
}
|
||||
|
||||
public ArrayList<String> getPageHelperProperties() {
|
||||
return pageHelperProperties;
|
||||
}
|
||||
|
||||
public void setPageHelperProperties(ArrayList<String> pageHelperProperties) {
|
||||
this.pageHelperProperties = pageHelperProperties;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,10 +55,6 @@
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -101,10 +101,6 @@
|
||||
<!--<artifactId>zipkin-autoconfigure-ui</artifactId>-->
|
||||
<!--<scope>runtime</scope>-->
|
||||
<!--</dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
package com.micro.fast.upms.service.impl;
|
||||
|
||||
import com.micro.fast.security.browser.service.UserService;
|
||||
import com.micro.fast.upms.dao.UpmsUserMapper;
|
||||
import com.micro.fast.upms.pojo.UpmsUser;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.authority.AuthorityUtils;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.social.security.SocialUser;
|
||||
import org.springframework.social.security.SocialUserDetails;
|
||||
import org.springframework.social.security.SocialUserDetailsService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 后台权限管理系统用户操作接口实现类
|
||||
* @author lsy
|
||||
*/
|
||||
@Service("userServiceImpl")
|
||||
public class UpmsUserAuthenticationServiceImpl implements UserService,SocialUserDetailsService{
|
||||
|
||||
@Autowired
|
||||
private UpmsUserMapper upmsUserMapper;
|
||||
|
||||
/**
|
||||
* 安全框架根据用户的名称获取用户的信息
|
||||
* @param username
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public User getUserByUsername(String username) {
|
||||
UpmsUser upmsUser = upmsUserMapper.selectByUsername(username);
|
||||
//将根据用户名查询出来的用户信息填入springSecurity的User对象中,默认是admin权限 todo 需要进行完善
|
||||
/* User user = new User(username,upmsUser.getPassword(), AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));*/
|
||||
//使用socialUser替换user.只有socialUser在才有getUserId方法,这样使用connect获取绑定第三方账号信息的时候才能用
|
||||
SocialUser user = new SocialUser(username, upmsUser.getPassword()
|
||||
, true, true, true, true
|
||||
, AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));
|
||||
return user;
|
||||
}
|
||||
|
||||
/**
|
||||
* springSocial根据用户的id获取用户的信息
|
||||
* @param username 这里只要是用户的唯一标识就可以
|
||||
* @return
|
||||
* @throws UsernameNotFoundException
|
||||
*/
|
||||
@Override
|
||||
public SocialUserDetails loadUserByUserId(String username) throws UsernameNotFoundException {
|
||||
//使用upmsUserMapper获取到用户的
|
||||
UpmsUser upmsUser = upmsUserMapper.selectByUsername(username);
|
||||
//todo 需要完善
|
||||
SocialUser socialUser = new SocialUser(username, upmsUser.getPassword()
|
||||
, true, true, true, true
|
||||
, AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));
|
||||
return socialUser;
|
||||
}
|
||||
}
|
||||
@@ -18,8 +18,6 @@ import com.micro.fast.common.response.BaseConst.*;
|
||||
@Service(value = "upmsUserServiceImpl")
|
||||
public class UpmsUserServiceImpl implements UpmsUserService {
|
||||
|
||||
@Autowired
|
||||
private PasswordEncoder passwordEncoder;
|
||||
|
||||
@Autowired
|
||||
private UpmsUserMapper upmsUserMapper;
|
||||
@@ -49,8 +47,8 @@ public class UpmsUserServiceImpl implements UpmsUserService {
|
||||
,UserResponse.EMAIL_IS_HAVE.getMsg()));
|
||||
}
|
||||
upmsUser.setCtime(Long.valueOf(System.currentTimeMillis()));
|
||||
//对密码进行加密处理
|
||||
upmsUser.setPassword(passwordEncoder.encode(upmsUser.getPassword()));
|
||||
//todo 对密码进行加密处理
|
||||
|
||||
int i = upmsUserMapper.insertSelective(upmsUser);
|
||||
//是否插入成功
|
||||
if (i<1){
|
||||
|
||||
@@ -70,13 +70,6 @@ eureka:
|
||||
defaultZone: http://micro:fast@www.register1.com:10002/eureka/,http://micro:fast@www.register2.com:10004/eureka/ #配置所有的注册中心
|
||||
instance:
|
||||
hostname: www.upms.com
|
||||
ms:
|
||||
security:
|
||||
browser:
|
||||
loginType: JSON
|
||||
html: /
|
||||
createRememberTable: false
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<lombok.plugin.version>1.16.6.1</lombok.plugin.version>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
|
||||
@@ -80,6 +81,12 @@
|
||||
<spring-boot-devtools.optional>true</spring-boot-devtools.optional>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>ubuntu-dev</id>
|
||||
@@ -304,6 +311,11 @@
|
||||
<!--对插件的版本以及配置进行统一的控制-->
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok-maven-plugin</artifactId>
|
||||
<version>${lombok.plugin.version}</version>
|
||||
</plugin>
|
||||
<!--生成mybatis dao 层 sql mapper的插件-->
|
||||
<plugin>
|
||||
<groupId>org.mybatis.generator</groupId>
|
||||
@@ -389,5 +401,11 @@
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
||||
Reference in New Issue
Block a user