Skip to content

Commit b8fce45

Browse files
committed
feat: compile project
1 parent 46608ea commit b8fce45

File tree

3 files changed

+22
-34
lines changed

3 files changed

+22
-34
lines changed

build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ repositories {
1212
}
1313

1414
dependencies {
15-
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
15+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
1616
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
17-
implementation 'org.mybatis:mybatis:3.5.6'
18-
implementation 'com.alibaba:fastjson:1.2.78'
19-
implementation 'mysql:mysql-connector-java:5.1.13'
17+
compileOnly 'org.mybatis:mybatis:3.5.9'
18+
implementation 'com.alibaba:fastjson:1.2.79'
19+
implementation 'mysql:mysql-connector-java:8.0.25'
2020
implementation 'com.github.vertical-blank:sql-formatter:2.0.3'
2121
}
2222

src/main/java/io/github/linyimin/plugin/compile/MybatisPojoCompile.java

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,12 @@
11
package io.github.linyimin.plugin.compile;
22

3-
import com.intellij.compiler.impl.ModuleCompileScope;
3+
import com.intellij.compiler.impl.ProjectCompileScope;
44
import com.intellij.openapi.compiler.CompilerManager;
5-
import com.intellij.openapi.module.Module;
6-
import com.intellij.openapi.module.ModuleUtilCore;
75
import com.intellij.openapi.project.Project;
86
import com.intellij.openapi.roots.OrderEnumerator;
97
import com.intellij.openapi.ui.Messages;
108
import com.intellij.openapi.util.io.FileUtil;
11-
import com.intellij.openapi.vfs.VirtualFile;
12-
import com.intellij.psi.PsiClass;
13-
import com.intellij.psi.PsiMethod;
14-
import com.intellij.psi.util.ClassUtil;
159
import com.intellij.util.lang.UrlClassLoader;
16-
import io.github.linyimin.plugin.service.MybatisSqlStateComponent;
17-
import io.github.linyimin.plugin.service.model.MybatisSqlConfiguration;
18-
import io.github.linyimin.plugin.utils.JavaUtils;
19-
import org.apache.commons.lang3.StringUtils;
2010

2111
import java.io.File;
2212
import java.net.MalformedURLException;
@@ -37,26 +27,16 @@ public class MybatisPojoCompile {
3727

3828
public static void compile(Project project) {
3929

40-
MybatisSqlConfiguration sqlConfig = project.getService(MybatisSqlStateComponent.class).getState();
41-
assert sqlConfig != null;
42-
43-
String methodName = sqlConfig.getMethod();
44-
String clazzName = StringUtils.substring(methodName,0, StringUtils.lastIndexOf(methodName, "."));
45-
46-
PsiClass psiClass = JavaUtils.findClazz(project, clazzName);
47-
final Module module = ModuleUtilCore.findModuleForPsiElement(psiClass);
48-
final VirtualFile virtualFile = psiClass.getContainingFile().getVirtualFile();
49-
ModuleCompileScope scope = new ModuleCompileScope(project, new Module[]{module}, false);
50-
// new FileSetCompileScope(Collections.singletonList(virtualFile), new Module[]{module})
30+
ProjectCompileScope scope = new ProjectCompileScope(project);
5131

5232
CompilerManager.getInstance(project).make(scope, null);
5333

54-
setClassLoader(module);
34+
setClassLoader(project);
5535
}
5636

57-
public static void setClassLoader(Module module) {
37+
public static void setClassLoader(Project project) {
5838
final List<URL> urls = new ArrayList<>();
59-
final List<String> list = OrderEnumerator.orderEntries(module).recursively().runtimeOnly().getPathsList().getPathList();
39+
final List<String> list = OrderEnumerator.orderEntries(project).recursively().runtimeOnly().getPathsList().getPathList();
6040
for (String path : list) {
6141
try {
6242
urls.add(new File(FileUtil.toSystemIndependentName(path)).toURI().toURL());

src/main/java/io/github/linyimin/plugin/utils/MybatisSqlUtils.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,21 @@ public static String getSql(String mybatisConfiguration, String qualifiedMethod,
3232

3333
InputStream in = IOUtils.toInputStream(mybatisConfiguration, Charset.defaultCharset());
3434

35-
Resources.setDefaultClassLoader(MybatisPojoCompile.classLoader);
36-
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
37-
Configuration configuration = sqlSessionFactory.getConfiguration();
35+
ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
36+
try {
37+
Thread.currentThread().setContextClassLoader(MybatisPojoCompile.classLoader);
38+
Resources.setDefaultClassLoader(MybatisPojoCompile.classLoader);
39+
40+
41+
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
42+
Configuration configuration = sqlSessionFactory.getConfiguration();
3843

39-
BoundSql sql = getBoundSql(configuration, qualifiedMethod, params);
44+
BoundSql sql = getBoundSql(configuration, qualifiedMethod, params);
4045

41-
return formatSql(configuration, sql);
46+
return formatSql(configuration, sql);
47+
} finally {
48+
Thread.currentThread().setContextClassLoader(currentClassLoader);
49+
}
4250
}
4351

4452
private static String formatSql(Configuration configuration, BoundSql boundSql) {

0 commit comments

Comments
 (0)