提交 2ffd77fb authored 作者: 马晨俊's avatar 马晨俊

mcj:新增参数添加修改,修改适配技术bug

上级 c849db7e
......@@ -30,7 +30,6 @@ public class InspectController {
*/
@PostMapping("/path")
public ResponseEntity inspect(@RequestBody InspectParameter inspectParameter, MultipartFile file) throws IOException {
//得到压缩包,进行解压
File file1 = file.getResource().getFile();
if(file1.getName().endsWith("zip")){
FileUtil.unPackZip(file1,"", "./");
......@@ -40,8 +39,9 @@ public class InspectController {
String[] split = file1.getName().split("\\.");
File file2 = new File("./"+split[0]);
String path1 = file2.getPath();
//File file1 = new File("/Users/mcj/IdeaProjects/inspect");
//String path1 = file1.getPath();
inspectService.inspect(inspectParameter,path1);
return ResponseEntity.ok(200);
}
......
package com.zjty.inspect.controller;
import com.zjty.inspect.entity.InspectParameter;
import com.zjty.inspect.service.ParameterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* @author Mcj
* @date 2020-03-03 11:00
*/
@RestController
@RequestMapping("/param")
public class ParamController {
@Autowired
private ParameterService parameterService;
@GetMapping
public ResponseEntity getParam(String id){
return ResponseEntity.ok(parameterService.getParameterById(id));
}
@PostMapping
public ResponseEntity saveParam(@RequestBody InspectParameter inspectParameter){
parameterService.saveParameter(inspectParameter);
return ResponseEntity.ok(200);
}
}
package com.zjty.inspect.controller;
import com.zjty.inspect.entity.ReportVo;
import com.zjty.inspect.entity.Pages;
import com.zjty.inspect.service.ReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import org.springframework.web.bind.annotation.*;
/**
* 报告
*
* @author Mcj
* @date 2020-02-27 09:58
*/
......@@ -21,13 +18,44 @@ public class ReportController {
@Autowired
private ReportService reportService;
/**
* 历史报告查看
*
* @return 历史报告
*/
@GetMapping
public ResponseEntity history(){
List<ReportVo> history = reportService.getHistory();
return ResponseEntity.ok(history);
public ResponseEntity history() {
return ResponseEntity.ok(reportService.getHistory());
}
/**
* 历史报告查看
*
* @return 历史报告
*/
@PostMapping
public ResponseEntity history(@RequestBody Pages pages) {
return ResponseEntity.ok(reportService.getHistory(pages.getPage()));
}
/**
* 历史报告查看
*
* @return 历史报告
*/
@GetMapping("/{id}")
public ResponseEntity getHistory(@PathVariable String id) {
return ResponseEntity.ok(reportService.getHistory(id));
}
/**
* 历史报告删除
*
* @return 历史报告
*/
@DeleteMapping
public ResponseEntity remove(String id) {
reportService.remove(id);
return ResponseEntity.ok(200);
}
}
......@@ -28,6 +28,14 @@ public class TechnologyController {
return ResponseEntity.ok(technologyService.findAllTechnology());
}
/**
* 获取所有关键技术
* @return List
*/
@GetMapping("/name")
public ResponseEntity getTechnologies(@RequestParam String name){
return ResponseEntity.ok(technologyService.findAllTechnology(name));
}
/**
* 添加关键技术
* @return List
......
......@@ -18,4 +18,10 @@ public interface BudgetDao extends JpaRepository<Budget,String> {
* @return
*/
List<Budget> findAllByReportIdEquals(String id);
/**
* 根据报告id删除
* @param id 报告id
*/
void deleteByReportIdEquals(String id);
}
......@@ -17,4 +17,10 @@ public interface TechnologyAndReportDao extends JpaRepository<TechnologyAndRepor
* @return list
*/
List<TechnologyAndReport> findAllByReportIdEquals(String id);
/**
* 根据报告id删除
* @param id 报告id
*/
void deleteByReportIdEquals(String id);
}
......@@ -2,6 +2,7 @@ package com.zjty.inspect.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
......@@ -11,7 +12,7 @@ import java.util.List;
* @date 2020-02-18 11:19
*/
@Data
public class DepTree {
public class DepTree implements Serializable {
private String depName;
......
package com.zjty.inspect.entity;
import com.sun.xml.internal.ws.developer.Serialization;
import lombok.Data;
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;
......@@ -11,7 +14,7 @@ import java.util.List;
* @date 2020-02-21 20:26
*/
@Data
public class DepTreeVo {
public class DepTreeVo implements Serializable {
private String id;
private List<DepTree> depTreeList = new ArrayList<>();
private List<DepTree> frontend = new ArrayList<>();
......
package com.zjty.inspect.entity;
import lombok.Data;
/**
* @author Mcj
* @date 2020-03-03 11:56
*/
@Data
public class Pages {
private int page;
private String id;
}
......@@ -10,6 +10,8 @@ import lombok.Data;
@Data
public class TechnologyQo {
private String id;
/**
* 技术名称
*/
......
......@@ -14,4 +14,10 @@ public interface ParameterService {
* @param inspectParameter 评估封装参数。
*/
public void saveParameter(InspectParameter inspectParameter);
/**
* 保存参数
* @param id id
*/
public InspectParameter getParameterById(String id);
}
package com.zjty.inspect.service;
import com.zjty.inspect.entity.ReportVo;
import org.springframework.data.domain.Page;
import java.util.List;
public interface ReportService {
/**
* 获取历史报告数量。页码等
* @param page 页码
* @return 历史报告
*/
public List<ReportVo> getHistory(int page);
/**
* 获取所有历史报告
* @return 历史报告
*/
public List<ReportVo> getHistory();
public Page getHistory();
/**
* 根据报告id查询
* @param id 报告id
* @return 历史报告
*/
public ReportVo getHistory(String id);
/**
* 根据id删除数据
* @param id 报告id
*/
void remove(String id);
}
......@@ -20,4 +20,6 @@ public interface TechnologyService {
* @return List
*/
public List<Technology> findAllTechnology();
public Technology findAllTechnology(String name);
}
......@@ -57,6 +57,7 @@ public class InspectServiceImpl implements InspectService {
File file = path1.toFile();
Report report1 = new Report();
report1.setGitAddress(path);
inspector.setInspectParameter(inspectParameter);
inspector.setReport(report1);
inspector.setSuffixLanguageMapping(suffixLanguageMapping);
inspector.setPath(path);
......
package com.zjty.inspect.service.impl;
import com.zjty.inspect.dao.ParameterDao;
import com.zjty.inspect.entity.InspectParameter;
import com.zjty.inspect.service.ParameterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 参数
* @author Mcj
* @date 2020-02-27 21:36
*/
......@@ -13,8 +16,20 @@ import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(rollbackFor = Exception.class)
public class ParameterServiceImpl implements ParameterService {
@Autowired
private ParameterDao parameterDao;
@Override
public void saveParameter(InspectParameter inspectParameter) {
parameterDao.save(inspectParameter);
}
@Override
public InspectParameter getParameterById(String id) {
if(parameterDao.findById(id).isPresent()){
return parameterDao.findById(id).get();
}
return new InspectParameter();
}
}
package com.zjty.inspect.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.zjty.inspect.dao.BudgetDao;
import com.zjty.inspect.dao.ReportDao;
import com.zjty.inspect.dao.TechnologyAndReportDao;
import com.zjty.inspect.dao.TechnologyDao;
import com.zjty.inspect.entity.*;
import com.zjty.inspect.service.ReportService;
import com.zjty.inspect.utils.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -31,68 +36,102 @@ public class ReportServiceImpl implements ReportService {
@Autowired
private BudgetDao budgetDao;
@Autowired
private RedisUtil redisUtil;
@Override
public List<ReportVo> getHistory() {
public List<ReportVo> getHistory(int page) {
ArrayList<ReportVo> reportVos = new ArrayList<>();
List<Report> all = reportDao.findAll();
for (Report report : all) {
ReportVo reportVo = new ReportVo();
reportVo.setId(report.getId());
reportVo.setManager(report.getManager());
reportVo.setLanguage(report.getLanguage());
reportVo.setFramework(report.getFramework());
reportVo.setRecastMethod(report.getRecastMethod());
reportVo.setHtmlAddress(report.getHtmlAddress());
// TODO: 2020-02-27 从redis中查询依赖树
HashSet<String> num = new HashSet<>();
List<TechnologyAndReport> rar = technologyAndReportDao.findAllByReportIdEquals(report.getId());
ArrayList<TechnologyVo> technologyVos = new ArrayList<>();
HashMap<String, ArrayList<RuleAndReportVo>> map = new HashMap<>();
for (TechnologyAndReport technologyAndReport : rar) {
num.add(technologyAndReport.getTechnologyId());
if (map.containsKey(technologyAndReport.getTechnologyId())) {
RuleAndReportVo ruleAndReportVo = new RuleAndReportVo();
ruleAndReportVo.setFilePath(technologyAndReport.getFilePath());
ruleAndReportVo.setLineNum(technologyAndReport.getLineNum());
map.get(technologyAndReport.getTechnologyId()).add(ruleAndReportVo);
} else {
RuleAndReportVo ruleAndReportVo = new RuleAndReportVo();
ruleAndReportVo.setFilePath(technologyAndReport.getFilePath());
ruleAndReportVo.setLineNum(technologyAndReport.getLineNum());
map.put(technologyAndReport.getTechnologyId(), new ArrayList<>());
map.get(technologyAndReport.getTechnologyId()).add(ruleAndReportVo);
}
}
Set<String> strings = map.keySet();
ArrayList<String> strings1 = new ArrayList<>(strings);
for (String id : strings) {
Optional<Technology> byId = technologyDao.findById(id);
if (byId.isPresent()) {
Technology technology = byId.get();
String technologyName = technology.getTechnologyName();
map.put(technologyName, map.get(id));
TechnologyVo technologyVo = new TechnologyVo();
technologyVo.setAdvice(technology.getAdvice());
technologyVo.setTechnologyName(technology.getTechnologyName());
technologyVo.setFund(technology.getFund());
technologyVos.add(technologyVo);
}
}
List<Budget> budgetList = budgetDao.findAllByReportIdEquals(report.getId());
for (String s : strings1) {
map.remove(s);
}
reportVo.setBudgets(budgetList);
reportVo.setWarnDetails(map);
reportVo.setTechnologyVos(technologyVos);
reportVo.setWarnNum(num.size());
PageRequest pageRequest = PageRequest.of(page - 1,10);
Page<Report> all = reportDao.findAll(pageRequest);
for (Report report : all.getContent()) {
ReportVo reportVo = set(report);
reportVos.add(reportVo);
}
return reportVos;
}
@Override
public Page getHistory() {
PageRequest pageRequest = PageRequest.of(1,10);
Page<Report> all = reportDao.findAll(pageRequest);
return all;
}
@Override
public ReportVo getHistory(String id) {
Optional<Report> byId = reportDao.findById(id);
if(byId.isPresent()){
return set(byId.get());
}
return new ReportVo();
}
@Override
@Modifying
public void remove(String id) {
reportDao.deleteById(id);
budgetDao.deleteByReportIdEquals(id);
technologyAndReportDao.deleteByReportIdEquals(id);
}
public ReportVo set(Report report){
ReportVo reportVo = new ReportVo();
reportVo.setId(report.getId());
reportVo.setManager(report.getManager());
reportVo.setLanguage(report.getLanguage());
reportVo.setFramework(report.getFramework());
reportVo.setRecastMethod(report.getRecastMethod());
reportVo.setHtmlAddress(report.getHtmlAddress());
// TODO: 2020-02-27 从redis中查询依赖树
Object o = redisUtil.get(report.getId());
if(o!=null){
reportVo.setDepTreeVo((DepTreeVo) o);
}
HashSet<String> num = new HashSet<>();
List<TechnologyAndReport> rar = technologyAndReportDao.findAllByReportIdEquals(report.getId());
ArrayList<TechnologyVo> technologyVos = new ArrayList<>();
HashMap<String, ArrayList<RuleAndReportVo>> map = new HashMap<>();
for (TechnologyAndReport technologyAndReport : rar) {
num.add(technologyAndReport.getTechnologyId());
if (map.containsKey(technologyAndReport.getTechnologyId())) {
RuleAndReportVo ruleAndReportVo = new RuleAndReportVo();
ruleAndReportVo.setFilePath(technologyAndReport.getFilePath());
ruleAndReportVo.setLineNum(technologyAndReport.getLineNum());
map.get(technologyAndReport.getTechnologyId()).add(ruleAndReportVo);
} else {
RuleAndReportVo ruleAndReportVo = new RuleAndReportVo();
ruleAndReportVo.setFilePath(technologyAndReport.getFilePath());
ruleAndReportVo.setLineNum(technologyAndReport.getLineNum());
map.put(technologyAndReport.getTechnologyId(), new ArrayList<>());
map.get(technologyAndReport.getTechnologyId()).add(ruleAndReportVo);
}
}
Set<String> strings = map.keySet();
ArrayList<String> strings1 = new ArrayList<>(strings);
for (String id : strings) {
Optional<Technology> byId = technologyDao.findById(id);
if (byId.isPresent()) {
Technology technology = byId.get();
String technologyName = technology.getTechnologyName();
map.put(technologyName, map.get(id));
TechnologyVo technologyVo = new TechnologyVo();
technologyVo.setAdvice(technology.getAdvice());
technologyVo.setTechnologyName(technology.getTechnologyName());
technologyVo.setFund(technology.getFund());
technologyVos.add(technologyVo);
}
}
List<Budget> budgetList = budgetDao.findAllByReportIdEquals(report.getId());
for (String s : strings1) {
map.remove(s);
}
reportVo.setBudgets(budgetList);
reportVo.setWarnDetails(map);
reportVo.setTechnologyVos(technologyVos);
reportVo.setWarnNum(num.size());
return reportVo;
}
}
......@@ -13,6 +13,7 @@ import java.util.List;
/**
* 适配技术
*
* @author Mcj
* @date 2020-02-27 12:00
*/
......@@ -25,22 +26,33 @@ public class TechnologyServiceImpl implements TechnologyService {
/**
* 新增适配技术
*
* @param technologyQo 前端数据封装类
*/
@Override
public void addAdvice(TechnologyQo technologyQo) {
if(technologyDao.findAllByTechnologyNameEquals(technologyQo.getTechnologyQoName())==null){
Technology technology = new Technology();
technology.setFund(technologyQo.getFund());
technology.setAdvice(technologyQo.getAdvice());
technology.setTechnologyName(technologyQo.getTechnologyQoName());
Technology technology = new Technology();
technology.setFund(technologyQo.getFund());
technology.setAdvice(technologyQo.getAdvice());
technology.setTechnologyName(technologyQo.getTechnologyQoName());
if (technologyQo.getId() == null) {
technology.setId(UUIDUtil.getUUID());
technologyDao.save(technology);
if(technologyDao.findAllByTechnologyNameEquals(technologyQo.getTechnologyQoName())!=null){
return;
}
} else {
technology.setId(technologyQo.getId());
}
technologyDao.save(technology);
}
@Override
public List<Technology> findAllTechnology() {
return technologyDao.findAll();
}
@Override
public Technology findAllTechnology(String name) {
return technologyDao.findAllByTechnologyNameEquals(name);
}
}
......@@ -51,7 +51,7 @@ public class task implements CommandLineRunner {
coefficientMode2.setId(UUIDUtil.getUUID());
coefficientMode2.setName("安全能力");
coefficientMode2.setMin(0);
coefficientMode2.setMax(2);
coefficientMode2.setMax(3);
coefficientMode2.setBelowCoefficient(-0.1);
coefficientMode2.setMediumCoefficient(0D);
coefficientMode2.setTopCoefficient(0.1);
......@@ -61,7 +61,7 @@ public class task implements CommandLineRunner {
coefficientMode3.setId(UUIDUtil.getUUID());
coefficientMode3.setName("安全能力");
coefficientMode3.setMin(0);
coefficientMode3.setMax(2);
coefficientMode3.setMax(3);
coefficientMode3.setBelowCoefficient(-0.2);
coefficientMode3.setMediumCoefficient(-0.1);
coefficientMode3.setTopCoefficient(0D);
......
package com.zjty.inspect.utils;
import com.zjty.inspect.dao.BudgetDao;
import com.zjty.inspect.dao.RuleDao;
import com.zjty.inspect.dao.TechnologyAndReportDao;
import com.zjty.inspect.dao.TechnologyDao;
import com.zjty.inspect.dao.*;
import com.zjty.inspect.entity.*;
import io.lettuce.core.dynamic.annotation.Param;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -50,6 +48,8 @@ public class Inspector {
private TechnologyDao technologyDao;
@Autowired
private BudgetDao budgetDao;
@Autowired
private ParameterDao parameterDao;
private DepTreeVo depTreeVo = new DepTreeVo();
private ArrayList<TechnologyAndReport> technologyAndReports = new ArrayList<>();
......@@ -318,6 +318,7 @@ public class Inspector {
fund+=technology.getFund();
}
//计算预算,三种预算
parameterDao.save(inspectParameter);
List<Budget> budget = budgetUitl.getBudget(report.getId(),fund, inspectParameter);
budgetDao.saveAll(budget);
// TODO: 2020-02-28 生成报告,返回地址 report.setsourceaddress;
......
......@@ -34,7 +34,17 @@ public class RedisUtil {
}
return result;
}
/**
* 读取缓存
* @param key
* @return
*/
public Object get(final String key) {
Object result = null;
ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
result = operations.get(key);
return result;
}
/**
* 批量删除对应的value
* @param keys
......
com.zjty:inspect:jar:0.0.1-SNAPSHOT
+- org.eclipse.jgit:org.eclipse.jgit:jar:5.2.1.201812262042-r:compile
+- org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.6.RELEASE:compile
| +- org.springframework.data:spring-data-redis:jar:2.1.9.RELEASE:compile
| | +- org.springframework.data:spring-data-keyvalue:jar:2.1.9.RELEASE:compile
| | +- org.springframework:spring-tx:jar:5.1.8.RELEASE:compile
| | +- org.springframework:spring-oxm:jar:5.1.8.RELEASE:compile
| | +- org.springframework:spring-aop:jar:5.1.8.RELEASE:compile
| | +- org.springframework:spring-context-support:jar:5.1.8.RELEASE:compile
| | \- org.slf4j:slf4j-api:jar:1.7.26:compile
| \- io.lettuce:lettuce-core:jar:5.1.7.RELEASE:compile
| +- io.netty:netty-common:jar:4.1.36.Final:compile
| +- io.netty:netty-handler:jar:4.1.36.Final:compile
| | +- io.netty:netty-buffer:jar:4.1.36.Final:compile
| | \- io.netty:netty-codec:jar:4.1.36.Final:compile
| +- io.netty:netty-transport:jar:4.1.36.Final:compile
| | \- io.netty:netty-resolver:jar:4.1.36.Final:compile
| \- io.projectreactor:reactor-core:jar:3.2.10.RELEASE:compile
| \- org.reactivestreams:reactive-streams:jar:1.0.2:compile
+- org.springframework.boot:spring-boot-starter:jar:2.1.6.RELEASE:compile
| +- org.springframework.boot:spring-boot:jar:2.1.6.RELEASE:compile
| | \- org.springframework:spring-context:jar:5.1.8.RELEASE:compile
| +- org.springframework.boot:spring-boot-autoconfigure:jar:2.1.6.RELEASE:compile
| +- org.springframework.boot:spring-boot-starter-logging:jar:2.1.6.RELEASE:compile
| | +- ch.qos.logback:logback-classic:jar:1.2.3:compile
| | | \- ch.qos.logback:logback-core:jar:1.2.3:compile
| | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2:compile
| | | \- org.apache.logging.log4j:log4j-api:jar:2.11.2:compile
| | \- org.slf4j:jul-to-slf4j:jar:1.7.26:compile
| +- javax.annotation:javax.annotation-api:jar:1.3.2:compile
| \- org.springframework:spring-core:jar:5.1.8.RELEASE:compile
| \- org.springframework:spring-jcl:jar:5.1.8.RELEASE:compile
+- org.apache.maven.shared:maven-invoker:jar:3.0.1:compile
| +- org.apache.maven.shared:maven-shared-utils:jar:3.2.1:compile
| | \- commons-io:commons-io:jar:2.5:compile
| \- org.codehaus.plexus:plexus-component-annotations:jar:1.7.1:compile
+- org.springframework.boot:spring-boot-starter-data-jpa:jar:2.1.6.RELEASE:compile
| +- org.springframework.boot:spring-boot-starter-aop:jar:2.1.6.RELEASE:compile
| | \- org.aspectj:aspectjweaver:jar:1.9.4:compile
| +- org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.6.RELEASE:compile
| | +- com.zaxxer:HikariCP:jar:3.2.0:compile
| | \- org.springframework:spring-jdbc:jar:5.1.8.RELEASE:compile
| +- javax.transaction:javax.transaction-api:jar:1.3:compile
| +- javax.xml.bind:jaxb-api:jar:2.3.1:compile
| | \- javax.activation:javax.activation-api:jar:1.2.0:compile
| +- org.hibernate:hibernate-core:jar:5.3.10.Final:compile
| | +- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile
| | +- javax.persistence:javax.persistence-api:jar:2.2:compile
| | +- org.javassist:javassist:jar:3.23.2-GA:compile
| | +- net.bytebuddy:byte-buddy:jar:1.9.13:compile
| | +- antlr:antlr:jar:2.7.7:compile
| | +- org.jboss:jandex:jar:2.0.5.Final:compile
| | +- com.fasterxml:classmate:jar:1.4.0:compile
| | +- org.dom4j:dom4j:jar:2.1.1:compile
| | \- org.hibernate.common:hibernate-commons-annotations:jar:5.0.4.Final:compile
| +- org.springframework.data:spring-data-jpa:jar:2.1.9.RELEASE:compile
| | +- org.springframework.data:spring-data-commons:jar:2.1.9.RELEASE:compile
| | +- org.springframework:spring-orm:jar:5.1.8.RELEASE:compile
| | \- org.springframework:spring-beans:jar:5.1.8.RELEASE:compile
| \- org.springframework:spring-aspects:jar:5.1.8.RELEASE:compile
+- org.springframework.boot:spring-boot-starter-web:jar:2.1.6.RELEASE:compile
| +- org.springframework.boot:spring-boot-starter-json:jar:2.1.6.RELEASE:compile
| | +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.9:compile
| | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
| | | \- com.fasterxml.jackson.core:jackson-core:jar:2.9.9:compile
| | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.9:compile
| | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.9:compile
| | \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.9:compile
| +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.6.RELEASE:compile
| | +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.21:compile
| | +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.21:compile
| | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.21:compile
| +- org.hibernate.validator:hibernate-validator:jar:6.0.17.Final:compile
| | \- javax.validation:validation-api:jar:2.0.1.Final:compile
| +- org.springframework:spring-web:jar:5.1.8.RELEASE:compile
| \- org.springframework:spring-webmvc:jar:5.1.8.RELEASE:compile
| \- org.springframework:spring-expression:jar:5.1.8.RELEASE:compile
+- com.alibaba:fastjson:jar:1.2.61:compile
+- mysql:mysql-connector-java:jar:8.0.16:compile
+- org.projectlombok:lombok:jar:1.18.8:compile
+- org.springframework.boot:spring-boot-starter-test:jar:2.1.6.RELEASE:test
| +- org.springframework.boot:spring-boot-test:jar:2.1.6.RELEASE:test
| +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.1.6.RELEASE:test
| +- com.jayway.jsonpath:json-path:jar:2.4.0:test
| | \- net.minidev:json-smart:jar:2.3:test
| | \- net.minidev:accessors-smart:jar:1.2:test
| | \- org.ow2.asm:asm:jar:5.0.4:test
| +- junit:junit:jar:4.12:test
| +- org.assertj:assertj-core:jar:3.11.1:test
| +- org.mockito:mockito-core:jar:2.23.4:test
| | +- net.bytebuddy:byte-buddy-agent:jar:1.9.13:test
| | \- org.objenesis:objenesis:jar:2.6:test
| +- org.hamcrest:hamcrest-core:jar:1.3:test
| +- org.hamcrest:hamcrest-library:jar:1.3:test
| +- org.skyscreamer:jsonassert:jar:1.5.0:test
| | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
| +- org.springframework:spring-test:jar:5.1.8.RELEASE:test
| \- org.xmlunit:xmlunit-core:jar:2.6.2:test
+- org.yaml:snakeyaml:jar:1.25:compile
+- net.lingala.zip4j:zip4j:jar:1.3.2:compile
\- com.github.junrar:junrar:jar:0.7:compile
+- commons-logging:commons-logging-api:jar:1.1:compile
\- org.apache.commons:commons-vfs2:jar:2.0:compile
+- commons-logging:commons-logging:jar:1.1.1:compile
+- org.apache.maven.scm:maven-scm-api:jar:1.4:compile
| \- org.codehaus.plexus:plexus-utils:jar:1.5.6:compile
\- org.apache.maven.scm:maven-scm-provider-svnexe:jar:1.4:compile
+- org.apache.maven.scm:maven-scm-provider-svn-commons:jar:1.4:compile
\- regexp:regexp:jar:1.3:compile
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论