Drop external annotations support in build tools
External annotations will only be considered in the IDE for additional
inspections based on more precise types in Java libraries
Original commit: 13c54a2678
This commit is contained in:
committed by
Dmitry Jemerov
parent
eec9d11a86
commit
1dcc772f45
-36
@@ -33,14 +33,6 @@ import org.jetbrains.jps.builders.logging.ProjectBuilderLogger;
|
|||||||
import org.jetbrains.jps.incremental.CompileContext;
|
import org.jetbrains.jps.incremental.CompileContext;
|
||||||
import org.jetbrains.jps.incremental.ModuleBuildTarget;
|
import org.jetbrains.jps.incremental.ModuleBuildTarget;
|
||||||
import org.jetbrains.jps.incremental.ProjectBuildException;
|
import org.jetbrains.jps.incremental.ProjectBuildException;
|
||||||
import org.jetbrains.jps.model.java.JpsAnnotationRootType;
|
|
||||||
import org.jetbrains.jps.model.java.JpsJavaSdkType;
|
|
||||||
import org.jetbrains.jps.model.library.JpsLibrary;
|
|
||||||
import org.jetbrains.jps.model.library.sdk.JpsSdk;
|
|
||||||
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
|
|
||||||
import org.jetbrains.jps.model.module.JpsDependencyElement;
|
|
||||||
import org.jetbrains.jps.model.module.JpsModule;
|
|
||||||
import org.jetbrains.jps.model.module.JpsSdkDependency;
|
|
||||||
import org.jetbrains.kotlin.config.IncrementalCompilation;
|
import org.jetbrains.kotlin.config.IncrementalCompilation;
|
||||||
import org.jetbrains.kotlin.modules.KotlinModuleXmlBuilder;
|
import org.jetbrains.kotlin.modules.KotlinModuleXmlBuilder;
|
||||||
|
|
||||||
@@ -92,7 +84,6 @@ public class KotlinBuilderModuleScriptGenerator {
|
|||||||
moduleSources,
|
moduleSources,
|
||||||
findSourceRoots(context, target),
|
findSourceRoots(context, target),
|
||||||
findClassPathRoots(target),
|
findClassPathRoots(target),
|
||||||
findAnnotationRoots(target),
|
|
||||||
(JavaModuleBuildTargetType) targetType,
|
(JavaModuleBuildTargetType) targetType,
|
||||||
// this excludes the output directories from the class path, to be removed for true incremental compilation
|
// this excludes the output directories from the class path, to be removed for true incremental compilation
|
||||||
outputDirs
|
outputDirs
|
||||||
@@ -149,33 +140,6 @@ public class KotlinBuilderModuleScriptGenerator {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private static List<File> findAnnotationRoots(@NotNull ModuleBuildTarget target) {
|
|
||||||
LinkedHashSet<File> annotationRootFiles = new LinkedHashSet<File>();
|
|
||||||
|
|
||||||
JpsModule module = target.getModule();
|
|
||||||
JpsSdk sdk = module.getSdk(getSdkType(module));
|
|
||||||
if (sdk != null) {
|
|
||||||
annotationRootFiles.addAll(sdk.getParent().getFiles(JpsAnnotationRootType.INSTANCE));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (JpsLibrary library : getAllDependencies(target).getLibraries()) {
|
|
||||||
annotationRootFiles.addAll(library.getFiles(JpsAnnotationRootType.INSTANCE));
|
|
||||||
}
|
|
||||||
|
|
||||||
// JDK is stored locally on user's machine, so its configuration, including external annotation paths
|
|
||||||
// is not available on TeamCity. When running on TeamCity, one has to provide extra path to JDK annotations
|
|
||||||
String extraAnnotationsPaths = System.getProperty("jps.kotlin.extra.annotation.paths");
|
|
||||||
if (extraAnnotationsPaths != null) {
|
|
||||||
String[] paths = extraAnnotationsPaths.split(";");
|
|
||||||
for (String path : paths) {
|
|
||||||
annotationRootFiles.add(new File(path));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return CollectionsKt.toList(annotationRootFiles);
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static JpsSdkType getSdkType(@NotNull JpsModule module) {
|
private static JpsSdkType getSdkType(@NotNull JpsModule module) {
|
||||||
for (JpsDependencyElement dependency : module.getDependenciesList().getDependencies()) {
|
for (JpsDependencyElement dependency : module.getDependenciesList().getDependencies()) {
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ public class KotlinModuleXmlBuilder {
|
|||||||
List<File> sourceFiles,
|
List<File> sourceFiles,
|
||||||
List<File> javaSourceRoots,
|
List<File> javaSourceRoots,
|
||||||
Collection<File> classpathRoots,
|
Collection<File> classpathRoots,
|
||||||
List<File> annotationRoots,
|
|
||||||
JavaModuleBuildTargetType targetType,
|
JavaModuleBuildTargetType targetType,
|
||||||
Set<File> directoriesToFilterOut
|
Set<File> directoriesToFilterOut
|
||||||
) {
|
) {
|
||||||
@@ -71,7 +70,6 @@ public class KotlinModuleXmlBuilder {
|
|||||||
|
|
||||||
processJavaSourceRoots(javaSourceRoots);
|
processJavaSourceRoots(javaSourceRoots);
|
||||||
processClasspath(classpathRoots, directoriesToFilterOut);
|
processClasspath(classpathRoots, directoriesToFilterOut);
|
||||||
processAnnotationRoots(annotationRoots);
|
|
||||||
|
|
||||||
closeTag(p, MODULE);
|
closeTag(p, MODULE);
|
||||||
return this;
|
return this;
|
||||||
@@ -102,13 +100,6 @@ public class KotlinModuleXmlBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processAnnotationRoots(@NotNull List<File> files) {
|
|
||||||
p.println("<!-- External annotations -->");
|
|
||||||
for (File file : files) {
|
|
||||||
p.println("<", EXTERNAL_ANNOTATIONS, " ", PATH, "=\"", getEscapedPath(file), "\"/>");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void processJavaSourceRoots(@NotNull List<File> files) {
|
private void processJavaSourceRoots(@NotNull List<File> files) {
|
||||||
p.println("<!-- Java source roots -->");
|
p.println("<!-- Java source roots -->");
|
||||||
for (File file : files) {
|
for (File file : files) {
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import org.jetbrains.jps.builders.JpsBuildTestCase;
|
|||||||
import org.jetbrains.jps.model.JpsDummyElement;
|
import org.jetbrains.jps.model.JpsDummyElement;
|
||||||
import org.jetbrains.jps.model.JpsModuleRootModificationUtil;
|
import org.jetbrains.jps.model.JpsModuleRootModificationUtil;
|
||||||
import org.jetbrains.jps.model.JpsProject;
|
import org.jetbrains.jps.model.JpsProject;
|
||||||
import org.jetbrains.jps.model.java.JpsAnnotationRootType;
|
|
||||||
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
|
import org.jetbrains.jps.model.java.JpsJavaDependencyScope;
|
||||||
import org.jetbrains.jps.model.java.JpsJavaLibraryType;
|
import org.jetbrains.jps.model.java.JpsJavaLibraryType;
|
||||||
import org.jetbrains.jps.model.java.JpsJavaSdkType;
|
import org.jetbrains.jps.model.java.JpsJavaSdkType;
|
||||||
@@ -73,7 +72,6 @@ public abstract class AbstractKotlinJpsBuildTestCase extends JpsBuildTestCase {
|
|||||||
String versionString = System.getProperty("java.version");
|
String versionString = System.getProperty("java.version");
|
||||||
JpsTypedLibrary<JpsSdk<JpsDummyElement>> jdk = myModel.getGlobal().addSdk(name, homePath, versionString, JpsJavaSdkType.INSTANCE);
|
JpsTypedLibrary<JpsSdk<JpsDummyElement>> jdk = myModel.getGlobal().addSdk(name, homePath, versionString, JpsJavaSdkType.INSTANCE);
|
||||||
jdk.addRoot(JpsPathUtil.pathToUrl(path), JpsOrderRootType.COMPILED);
|
jdk.addRoot(JpsPathUtil.pathToUrl(path), JpsOrderRootType.COMPILED);
|
||||||
jdk.addRoot(JpsPathUtil.pathToUrl(PathUtil.getKotlinPathsForDistDirectory().getJdkAnnotationsPath().getAbsolutePath()), JpsAnnotationRootType.INSTANCE);
|
|
||||||
return jdk.getProperties();
|
return jdk.getProperties();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ public class ClasspathOrderTest : TestCaseWithTmpdir() {
|
|||||||
listOf(sourceDir),
|
listOf(sourceDir),
|
||||||
listOf(sourceDir),
|
listOf(sourceDir),
|
||||||
listOf(PathUtil.getKotlinPathsForDistDirectory().getRuntimePath()),
|
listOf(PathUtil.getKotlinPathsForDistDirectory().getRuntimePath()),
|
||||||
listOf(),
|
|
||||||
JavaModuleBuildTargetType.PRODUCTION,
|
JavaModuleBuildTargetType.PRODUCTION,
|
||||||
setOf()
|
setOf()
|
||||||
).asText().toString()
|
).asText().toString()
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ public class KotlinModuleXmlGeneratorTest extends TestCase {
|
|||||||
Arrays.asList(new File("s1"), new File("s2")),
|
Arrays.asList(new File("s1"), new File("s2")),
|
||||||
Collections.singletonList(new File("java")),
|
Collections.singletonList(new File("java")),
|
||||||
Arrays.asList(new File("cp1"), new File("cp2")),
|
Arrays.asList(new File("cp1"), new File("cp2")),
|
||||||
Arrays.asList(new File("a1/f1"), new File("a2")),
|
|
||||||
JavaModuleBuildTargetType.PRODUCTION,
|
JavaModuleBuildTargetType.PRODUCTION,
|
||||||
Collections.<File>emptySet()
|
Collections.<File>emptySet()
|
||||||
).asText().toString();
|
).asText().toString();
|
||||||
@@ -46,7 +45,6 @@ public class KotlinModuleXmlGeneratorTest extends TestCase {
|
|||||||
Arrays.asList(new File("s1"), new File("s2")),
|
Arrays.asList(new File("s1"), new File("s2")),
|
||||||
Collections.<File>emptyList(),
|
Collections.<File>emptyList(),
|
||||||
Arrays.asList(new File("cp1"), new File("cp2")),
|
Arrays.asList(new File("cp1"), new File("cp2")),
|
||||||
Arrays.asList(new File("a1/f1"), new File("a2")),
|
|
||||||
JavaModuleBuildTargetType.PRODUCTION,
|
JavaModuleBuildTargetType.PRODUCTION,
|
||||||
Collections.singleton(new File("cp1"))
|
Collections.singleton(new File("cp1"))
|
||||||
).asText().toString();
|
).asText().toString();
|
||||||
@@ -61,7 +59,6 @@ public class KotlinModuleXmlGeneratorTest extends TestCase {
|
|||||||
Arrays.asList(new File("s1"), new File("s2")),
|
Arrays.asList(new File("s1"), new File("s2")),
|
||||||
Collections.<File>emptyList(),
|
Collections.<File>emptyList(),
|
||||||
Arrays.asList(new File("cp1"), new File("cp2")),
|
Arrays.asList(new File("cp1"), new File("cp2")),
|
||||||
Arrays.asList(new File("a1/f1"), new File("a2")),
|
|
||||||
JavaModuleBuildTargetType.PRODUCTION,
|
JavaModuleBuildTargetType.PRODUCTION,
|
||||||
Collections.singleton(new File("cp1"))
|
Collections.singleton(new File("cp1"))
|
||||||
);
|
);
|
||||||
@@ -71,7 +68,6 @@ public class KotlinModuleXmlGeneratorTest extends TestCase {
|
|||||||
Arrays.asList(new File("s12"), new File("s22")),
|
Arrays.asList(new File("s12"), new File("s22")),
|
||||||
Collections.<File>emptyList(),
|
Collections.<File>emptyList(),
|
||||||
Arrays.asList(new File("cp12"), new File("cp22")),
|
Arrays.asList(new File("cp12"), new File("cp22")),
|
||||||
Arrays.asList(new File("a12/f12"), new File("a22")),
|
|
||||||
JavaModuleBuildTargetType.TEST,
|
JavaModuleBuildTargetType.TEST,
|
||||||
Collections.singleton(new File("cp12"))
|
Collections.singleton(new File("cp12"))
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user