From 5ccaf7ecff17a4d00d63f103bfa10f8ef8001b0d Mon Sep 17 00:00:00 2001 From: antony Date: Thu, 10 Feb 2022 11:26:18 +0800 Subject: [PATCH 1/2] feat: support pom.xml in a subfolder --- .../xiaoju/basetech/entity/CoverBaseRequest.java | 5 +++++ .../basetech/entity/CoverageReportEntity.java | 2 ++ .../basetech/service/impl/CodeCovServiceImpl.java | 4 ++-- .../xiaoju/basetech/util/CodeCloneExecutor.java | 10 ++++++++-- .../xiaoju/basetech/util/CodeCompilerExecutor.java | 2 +- .../com/xiaoju/basetech/util/MavenModuleUtil.java | 14 +++++++------- .../java/com/xiaoju/basetech/util/UnitTester.java | 2 +- src/main/resources/mapper/CoverageReportDao.xml | 4 +++- 8 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/xiaoju/basetech/entity/CoverBaseRequest.java b/src/main/java/com/xiaoju/basetech/entity/CoverBaseRequest.java index e643770..ed7e897 100644 --- a/src/main/java/com/xiaoju/basetech/entity/CoverBaseRequest.java +++ b/src/main/java/com/xiaoju/basetech/entity/CoverBaseRequest.java @@ -35,6 +35,11 @@ public class CoverBaseRequest { */ private String subModule; + /** + * codePath为相对目录,表示从代码库根目录到pom.xml的相对路径,如果为空,则代表pom.xml在根目录下 + */ + private String codePath; + /** * 1、全量;2、增量 */ diff --git a/src/main/java/com/xiaoju/basetech/entity/CoverageReportEntity.java b/src/main/java/com/xiaoju/basetech/entity/CoverageReportEntity.java index 7c9c4bb..b9e2ce3 100644 --- a/src/main/java/com/xiaoju/basetech/entity/CoverageReportEntity.java +++ b/src/main/java/com/xiaoju/basetech/entity/CoverageReportEntity.java @@ -38,5 +38,7 @@ public class CoverageReportEntity { private String reportFile; private Integer from; private String logFile = ""; + private String nowLocalCodePath = ""; + private String baseLocalCodePath = ""; } \ No newline at end of file diff --git a/src/main/java/com/xiaoju/basetech/service/impl/CodeCovServiceImpl.java b/src/main/java/com/xiaoju/basetech/service/impl/CodeCovServiceImpl.java index 3dad5a6..40c0ca4 100644 --- a/src/main/java/com/xiaoju/basetech/service/impl/CodeCovServiceImpl.java +++ b/src/main/java/com/xiaoju/basetech/service/impl/CodeCovServiceImpl.java @@ -254,7 +254,7 @@ public void cloneAndCompileCode(CoverageReportEntity coverageReport) { } DeployInfoEntity deployInfo = new DeployInfoEntity(); deployInfo.setUuid(coverageReport.getUuid()); - deployInfo.setCodePath(coverageReport.getNowLocalPath()); + deployInfo.setCodePath(coverageReport.getNowLocalCodePath()); String pomPath = deployInfo.getCodePath() + "/pom.xml"; ArrayList moduleList = MavenModuleUtil.getValidModules(pomPath); StringBuilder moduleNames = new StringBuilder(""); @@ -341,7 +341,7 @@ public void calculateEnvCov(CoverageReportEntity coverageReport) { } try { - int exitCode = CmdExecutor.executeCmd(new String[]{"cd " + coverageReport.getNowLocalPath() + "&&java -jar " + + int exitCode = CmdExecutor.executeCmd(new String[]{"cd " + coverageReport.getNowLocalCodePath() + "&&java -jar " + JACOCO_PATH + " dump --address " + deployInfoEntity.getAddress() + " --port " + deployInfoEntity.getPort() + " --destfile ./jacoco.exec"}, CMD_TIMEOUT); diff --git a/src/main/java/com/xiaoju/basetech/util/CodeCloneExecutor.java b/src/main/java/com/xiaoju/basetech/util/CodeCloneExecutor.java index e98c118..5cf89a3 100644 --- a/src/main/java/com/xiaoju/basetech/util/CodeCloneExecutor.java +++ b/src/main/java/com/xiaoju/basetech/util/CodeCloneExecutor.java @@ -5,11 +5,12 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import tk.mybatis.mapper.util.StringUtil; import java.io.File; import static com.xiaoju.basetech.util.Constants.CODE_ROOT; - +import org.springframework.util.StringUtils; /** * @description: @@ -36,8 +37,13 @@ public void cloneCode(CoverageReportEntity coverageReport) { coverageReport.setLogFile(logFile); try { String uuid = coverageReport.getUuid(); - String nowLocalPath = CODE_ROOT + uuid + "/" + coverageReport.getNowVersion().replace("/", "_"); + String nowLocalPath = CODE_ROOT + uuid + "/" + + coverageReport.getNowVersion().replace("/", "_"); coverageReport.setNowLocalPath(nowLocalPath); + String codePath=coverageReport.getCodePath(); + coverageReport.setNowLocalCodePath( (StringUtils.isEmpty(coverageReport.getEnvType()) + ? nowLocalPath:nowLocalPath+"/"+codePath) ); + // suppose pom.xml is not in project root path if (new File(CODE_ROOT + uuid + "/").exists()) { FileUtil.cleanDir(CODE_ROOT + uuid + "/"); } diff --git a/src/main/java/com/xiaoju/basetech/util/CodeCompilerExecutor.java b/src/main/java/com/xiaoju/basetech/util/CodeCompilerExecutor.java index c1016fe..a9fb81b 100644 --- a/src/main/java/com/xiaoju/basetech/util/CodeCompilerExecutor.java +++ b/src/main/java/com/xiaoju/basetech/util/CodeCompilerExecutor.java @@ -19,7 +19,7 @@ public class CodeCompilerExecutor { public void compileCode(CoverageReportEntity coverageReport) { String logFile = coverageReport.getLogFile().replace(LocalIpUtils.getTomcatBaseUrl()+"logs/", LOG_PATH); - String[] compileCmd = new String[]{"cd " + coverageReport.getNowLocalPath() + "&&mvn clean compile " + + String[] compileCmd = new String[]{"cd " + coverageReport.getNowLocalCodePath() + "&&mvn clean compile " + (StringUtils.isEmpty(coverageReport.getEnvType()) ? "" : "-P=" + coverageReport.getEnvType()) + ">>" + logFile}; try { int exitCode = CmdExecutor.executeCmd(compileCmd, 600000L); diff --git a/src/main/java/com/xiaoju/basetech/util/MavenModuleUtil.java b/src/main/java/com/xiaoju/basetech/util/MavenModuleUtil.java index f24e331..efbdfab 100644 --- a/src/main/java/com/xiaoju/basetech/util/MavenModuleUtil.java +++ b/src/main/java/com/xiaoju/basetech/util/MavenModuleUtil.java @@ -27,21 +27,21 @@ public class MavenModuleUtil { public void addMavenModule(CoverageReportEntity coverageReport) { try { - String pomPath = coverageReport.getNowLocalPath() + "/pom.xml"; + String pomPath = coverageReport.getNowLocalCodePath() + "/pom.xml"; File pomFile = new File(pomPath); if (!pomFile.exists()) { coverageReport.setRequestStatus(Constants.JobStatus.FAILADDMODULE.val()); return; } // 添加lombok配置 - File lombokConfig = new File(coverageReport.getNowLocalPath() + "/lombok.config"); + File lombokConfig = new File(coverageReport.getNowLocalCodePath() + "/lombok.config"); FileWriter lombokWriter = new FileWriter(lombokConfig); lombokWriter.write("lombok.addLombokGeneratedAnnotation = true"); lombokWriter.flush(); lombokWriter.close(); ArrayList list = getChildPomsPath(pomPath); if (list.size() <= 1) { - coverageReport.setReportFile(coverageReport.getNowLocalPath() + "/target/site/jacoco/index.html"); + coverageReport.setReportFile(coverageReport.getNowLocalCodePath() + "/target/site/jacoco/index.html"); coverageReport.setRequestStatus(Constants.JobStatus.ADDMODULE_DONE.val()); return; } @@ -50,7 +50,7 @@ public void addMavenModule(CoverageReportEntity coverageReport) { String str = dependencyStr(pomPath, moduleInfo, denpBuilder).toString(); if (StringUtils.isEmpty(str)) { coverageReport.setRequestStatus(Constants.JobStatus.ADDMODULE_DONE.val()); - coverageReport.setReportFile(coverageReport.getNowLocalPath() + "/target/site/jacoco/index.html"); + coverageReport.setReportFile(coverageReport.getNowLocalCodePath() + "/target/site/jacoco/index.html"); return; } //在父pom中写入jacocomodule @@ -102,17 +102,17 @@ public void addMavenModule(CoverageReportEntity coverageReport) { " \n" + " \n" + ""); - File coverageModule = new File(coverageReport.getNowLocalPath() + "/jacocomodule"); + File coverageModule = new File(coverageReport.getNowLocalCodePath() + "/jacocomodule"); if (!coverageModule.exists()) { coverageModule.mkdir(); - File coveragePomFile = new File(coverageReport.getNowLocalPath() + "/jacocomodule/pom.xml"); + File coveragePomFile = new File(coverageReport.getNowLocalCodePath() + "/jacocomodule/pom.xml"); if (!coveragePomFile.exists()) { coveragePomFile.createNewFile(); FileWriter cwriter = new FileWriter(coveragePomFile); cwriter.write(builder.toString()); cwriter.flush(); cwriter.close(); - coverageReport.setReportFile(coverageReport.getNowLocalPath() + "/jacocomodule/target/site/jacoco-aggregate/index.html"); + coverageReport.setReportFile(coverageReport.getNowLocalCodePath() + "/jacocomodule/target/site/jacoco-aggregate/index.html"); coverageReport.setRequestStatus(Constants.JobStatus.ADDMODULE_DONE.val()); return; } diff --git a/src/main/java/com/xiaoju/basetech/util/UnitTester.java b/src/main/java/com/xiaoju/basetech/util/UnitTester.java index 4f10a21..2937183 100644 --- a/src/main/java/com/xiaoju/basetech/util/UnitTester.java +++ b/src/main/java/com/xiaoju/basetech/util/UnitTester.java @@ -24,7 +24,7 @@ public class UnitTester { public void executeUnitTest(CoverageReportEntity coverageReport) { long startTime = System.currentTimeMillis(); - String unittestCmd = "cd " + coverageReport.getNowLocalPath() + "&&mvn clean"; + String unittestCmd = "cd " + coverageReport.getNowLocalCodePath() + "&&mvn clean"; if (coverageReport.getEnvType() != null && !coverageReport.getEnvType().equals("")) { unittestCmd = unittestCmd + " -P=" + coverageReport.getEnvType(); } diff --git a/src/main/resources/mapper/CoverageReportDao.xml b/src/main/resources/mapper/CoverageReportDao.xml index f53dc7d..5109dca 100644 --- a/src/main/resources/mapper/CoverageReportDao.xml +++ b/src/main/resources/mapper/CoverageReportDao.xml @@ -21,7 +21,7 @@ - +