mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-01 06:51:17 +07:00
external compiler: some interfaces extracted
This commit is contained in:
@@ -2,7 +2,8 @@ package org.jetbrains.jps.builders;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.incremental.ModuleRootsIndex;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -31,7 +32,7 @@ public abstract class BuildTarget<R extends BuildRootDescriptor> {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public abstract List<R> computeRootDescriptors(JpsModel model, ModuleRootsIndex index);
|
||||
public abstract List<R> computeRootDescriptors(JpsModel model, ModuleExcludeIndex index, IgnoredFileIndex ignoredFileIndex);
|
||||
|
||||
@Nullable
|
||||
public abstract BuildRootDescriptor findRootDescriptor(String rootId, BuildRootIndex rootIndex);
|
||||
|
||||
@@ -10,7 +10,8 @@ import org.jetbrains.jps.builders.*;
|
||||
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
|
||||
import org.jetbrains.jps.incremental.BuilderRegistry;
|
||||
import org.jetbrains.jps.incremental.CompileContext;
|
||||
import org.jetbrains.jps.incremental.ModuleRootsIndex;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.incremental.fs.RootDescriptor;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
import org.jetbrains.jps.service.JpsServiceManager;
|
||||
@@ -27,20 +28,26 @@ public class BuildRootIndexImpl implements BuildRootIndex {
|
||||
private HashMap<BuildTarget<?>, List<? extends BuildRootDescriptor>> myRootsByTarget;
|
||||
private THashMap<File,List<BuildRootDescriptor>> myRootToDescriptor;
|
||||
|
||||
public BuildRootIndexImpl(BuildTargetIndex targetIndex, JpsModel model, ModuleRootsIndex index, File dataStorageRoot) {
|
||||
public BuildRootIndexImpl(BuildTargetIndex targetIndex,
|
||||
JpsModel model,
|
||||
ModuleExcludeIndex index,
|
||||
File dataStorageRoot, final IgnoredFileIndex ignoredFileIndex) {
|
||||
myRootsByTarget = new HashMap<BuildTarget<?>, List<? extends BuildRootDescriptor>>();
|
||||
myRootToDescriptor = new THashMap<File, List<BuildRootDescriptor>>(FileUtil.FILE_HASHING_STRATEGY);
|
||||
final Iterable<AdditionalRootsProviderService> rootsProviders = JpsServiceManager.getInstance().getExtensions(AdditionalRootsProviderService.class);
|
||||
for (BuildTargetType<?> targetType : BuilderRegistry.getInstance().getTargetTypes()) {
|
||||
for (BuildTarget<?> target : targetIndex.getAllTargets(targetType)) {
|
||||
addRoots(dataStorageRoot, rootsProviders, targetType, target, model, index);
|
||||
addRoots(dataStorageRoot, rootsProviders, targetType, target, model, index, ignoredFileIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private <R extends BuildRootDescriptor> void addRoots(File dataStorageRoot, Iterable<AdditionalRootsProviderService> rootsProviders, BuildTargetType<?> targetType,
|
||||
BuildTarget<R> target, JpsModel model, ModuleRootsIndex index) {
|
||||
List<R> descriptors = target.computeRootDescriptors(model, index);
|
||||
private <R extends BuildRootDescriptor> void addRoots(File dataStorageRoot, Iterable<AdditionalRootsProviderService> rootsProviders,
|
||||
BuildTargetType<?> targetType, BuildTarget<R> target,
|
||||
JpsModel model,
|
||||
ModuleExcludeIndex index,
|
||||
IgnoredFileIndex ignoredFileIndex) {
|
||||
List<R> descriptors = target.computeRootDescriptors(model, index, ignoredFileIndex);
|
||||
for (AdditionalRootsProviderService<?> provider : rootsProviders) {
|
||||
if (provider.getTargetTypes().contains(targetType)) {
|
||||
//noinspection unchecked
|
||||
|
||||
@@ -12,6 +12,9 @@ import org.jetbrains.jps.builders.BuildTargetLoader;
|
||||
import org.jetbrains.jps.builders.BuildTargetType;
|
||||
import org.jetbrains.jps.builders.impl.BuildRootIndexImpl;
|
||||
import org.jetbrains.jps.builders.impl.BuildTargetIndexImpl;
|
||||
import org.jetbrains.jps.indices.impl.IgnoredFileIndexImpl;
|
||||
import org.jetbrains.jps.indices.impl.ModuleExcludeIndexImpl;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.builders.java.dependencyView.Callbacks;
|
||||
import org.jetbrains.jps.incremental.*;
|
||||
import org.jetbrains.jps.incremental.fs.BuildFSState;
|
||||
@@ -53,8 +56,9 @@ public class BuildRunner {
|
||||
public ProjectDescriptor load(MessageHandler msgHandler, File dataStorageRoot, BuildFSState fsState) throws IOException {
|
||||
final JpsModel jpsModel = myModelLoader.loadModel();
|
||||
BuildTargetIndexImpl targetIndex = new BuildTargetIndexImpl(jpsModel);
|
||||
ModuleRootsIndex index = new ModuleRootsIndex(jpsModel);
|
||||
BuildRootIndexImpl buildRootIndex = new BuildRootIndexImpl(targetIndex, jpsModel, index, dataStorageRoot);
|
||||
ModuleExcludeIndex index = new ModuleExcludeIndexImpl(jpsModel);
|
||||
IgnoredFileIndexImpl ignoredFileIndex = new IgnoredFileIndexImpl(jpsModel);
|
||||
BuildRootIndexImpl buildRootIndex = new BuildRootIndexImpl(targetIndex, jpsModel, index, dataStorageRoot, ignoredFileIndex);
|
||||
BuildTargetsState targetsState = new BuildTargetsState(dataStorageRoot, jpsModel, buildRootIndex);
|
||||
|
||||
ProjectTimestamps projectTimestamps = null;
|
||||
@@ -86,7 +90,7 @@ public class BuildRunner {
|
||||
}
|
||||
|
||||
return new ProjectDescriptor(jpsModel, fsState, projectTimestamps, dataManager, BuildLoggingManager.DEFAULT, index, targetsState,
|
||||
targetIndex, buildRootIndex);
|
||||
targetIndex, buildRootIndex, ignoredFileIndex);
|
||||
}
|
||||
|
||||
public void runBuild(ProjectDescriptor pd, CanceledStatus cs, @Nullable Callbacks.ConstantAffectionResolver constantSearch,
|
||||
|
||||
@@ -4,11 +4,12 @@ import org.jetbrains.jps.builders.BuildRootIndex;
|
||||
import org.jetbrains.jps.builders.BuildTargetIndex;
|
||||
import org.jetbrains.jps.incremental.BuildLoggingManager;
|
||||
import org.jetbrains.jps.incremental.CompilerEncodingConfiguration;
|
||||
import org.jetbrains.jps.incremental.ModuleRootsIndex;
|
||||
import org.jetbrains.jps.incremental.fs.BuildFSState;
|
||||
import org.jetbrains.jps.incremental.storage.BuildDataManager;
|
||||
import org.jetbrains.jps.incremental.storage.BuildTargetsState;
|
||||
import org.jetbrains.jps.incremental.storage.ProjectTimestamps;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
import org.jetbrains.jps.model.JpsProject;
|
||||
import org.jetbrains.jps.model.java.JpsJavaSdkType;
|
||||
@@ -31,22 +32,24 @@ public final class ProjectDescriptor {
|
||||
public final BuildDataManager dataManager;
|
||||
private final BuildLoggingManager myLoggingManager;
|
||||
private final BuildTargetsState myTargetsState;
|
||||
public ModuleRootsIndex rootsIndex;
|
||||
public ModuleExcludeIndex moduleExcludeIndex;
|
||||
private int myUseCounter = 1;
|
||||
private Set<JpsSdk<?>> myProjectJavaSdks;
|
||||
private CompilerEncodingConfiguration myEncodingConfiguration;
|
||||
private final BuildRootIndex myBuildRootIndex;
|
||||
private final BuildTargetIndex myBuildTargetIndex;
|
||||
private final IgnoredFileIndex myIgnoredFileIndex;
|
||||
|
||||
public ProjectDescriptor(JpsModel jpsModel,
|
||||
BuildFSState fsState,
|
||||
ProjectTimestamps timestamps,
|
||||
BuildDataManager dataManager,
|
||||
BuildLoggingManager loggingManager,
|
||||
final ModuleRootsIndex moduleRootsIndex,
|
||||
final ModuleExcludeIndex moduleExcludeIndex,
|
||||
final BuildTargetsState targetsState,
|
||||
final BuildTargetIndex buildTargetIndex, final BuildRootIndex buildRootIndex) {
|
||||
final BuildTargetIndex buildTargetIndex, final BuildRootIndex buildRootIndex, IgnoredFileIndex ignoredFileIndex) {
|
||||
this.jpsModel = jpsModel;
|
||||
myIgnoredFileIndex = ignoredFileIndex;
|
||||
this.jpsProject = jpsModel.getProject();
|
||||
this.fsState = fsState;
|
||||
this.timestamps = timestamps;
|
||||
@@ -54,7 +57,7 @@ public final class ProjectDescriptor {
|
||||
myBuildTargetIndex = buildTargetIndex;
|
||||
myBuildRootIndex = buildRootIndex;
|
||||
myLoggingManager = loggingManager;
|
||||
rootsIndex = moduleRootsIndex;
|
||||
this.moduleExcludeIndex = moduleExcludeIndex;
|
||||
myProjectJavaSdks = new HashSet<JpsSdk<?>>();
|
||||
myEncodingConfiguration = new CompilerEncodingConfiguration(jpsModel, buildRootIndex);
|
||||
for (JpsModule module : jpsProject.getModules()) {
|
||||
@@ -74,6 +77,10 @@ public final class ProjectDescriptor {
|
||||
return myBuildTargetIndex;
|
||||
}
|
||||
|
||||
public IgnoredFileIndex getIgnoredFileIndex() {
|
||||
return myIgnoredFileIndex;
|
||||
}
|
||||
|
||||
public BuildTargetsState getTargetsState() {
|
||||
return myTargetsState;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.jetbrains.jps.JpsPathUtil;
|
||||
import org.jetbrains.jps.ModuleChunk;
|
||||
import org.jetbrains.jps.builders.BuildTarget;
|
||||
import org.jetbrains.jps.builders.impl.BuildTargetChunk;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.cmdline.ProjectDescriptor;
|
||||
import org.jetbrains.jps.incremental.fs.BuildFSState;
|
||||
import org.jetbrains.jps.incremental.fs.RootDescriptor;
|
||||
@@ -142,7 +143,7 @@ public class FSOperations {
|
||||
ModuleBuildTarget target,
|
||||
Timestamps timestamps, boolean forceMarkDirty,
|
||||
@Nullable THashSet<File> currentFiles) throws IOException {
|
||||
final ModuleRootsIndex rootsIndex = context.getProjectDescriptor().rootsIndex;
|
||||
final ModuleExcludeIndex rootsIndex = context.getProjectDescriptor().moduleExcludeIndex;
|
||||
final Set<File> excludes = new HashSet<File>(rootsIndex.getModuleExcludes(target.getModule()));
|
||||
for (RootDescriptor rd : context.getProjectDescriptor().getBuildRootIndex().getTargetRoots(target, context)) {
|
||||
if (!rd.root.exists()) {
|
||||
|
||||
@@ -6,6 +6,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.JpsPathUtil;
|
||||
import org.jetbrains.jps.builders.BuildRootIndex;
|
||||
import org.jetbrains.jps.builders.BuildTarget;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
|
||||
import org.jetbrains.jps.incremental.fs.RootDescriptor;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
@@ -75,7 +77,7 @@ public class ModuleBuildTarget extends BuildTarget<RootDescriptor> {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<RootDescriptor> computeRootDescriptors(JpsModel model, ModuleRootsIndex index) {
|
||||
public List<RootDescriptor> computeRootDescriptors(JpsModel model, ModuleExcludeIndex index, IgnoredFileIndex ignoredFileIndex) {
|
||||
List<RootDescriptor> roots = new ArrayList<RootDescriptor>();
|
||||
for (JpsModuleSourceRoot sourceRoot : myModule.getSourceRoots()) {
|
||||
final File root = JpsPathUtil.urlToFile(sourceRoot.getUrl());
|
||||
|
||||
+4
-3
@@ -9,7 +9,8 @@ import org.jetbrains.jps.builders.BuildRootIndex;
|
||||
import org.jetbrains.jps.builders.BuildTarget;
|
||||
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
|
||||
import org.jetbrains.jps.incremental.ModuleBuildTarget;
|
||||
import org.jetbrains.jps.incremental.ModuleRootsIndex;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.incremental.artifacts.builders.LayoutElementBuildersRegistry;
|
||||
import org.jetbrains.jps.incremental.artifacts.impl.JpsArtifactUtil;
|
||||
import org.jetbrains.jps.incremental.artifacts.instructions.*;
|
||||
@@ -102,8 +103,8 @@ public class ArtifactBuildTarget extends BuildTarget<ArtifactRootDescriptor> {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<ArtifactRootDescriptor> computeRootDescriptors(JpsModel model, ModuleRootsIndex index) {
|
||||
ArtifactInstructionsBuilderImpl builder = new ArtifactInstructionsBuilderImpl(index, this);
|
||||
public List<ArtifactRootDescriptor> computeRootDescriptors(JpsModel model, ModuleExcludeIndex index, IgnoredFileIndex ignoredFileIndex) {
|
||||
ArtifactInstructionsBuilderImpl builder = new ArtifactInstructionsBuilderImpl(index, ignoredFileIndex, this);
|
||||
ArtifactInstructionsBuilderContext context = new ArtifactInstructionsBuilderContextImpl(model, new ProjectPaths(model.getProject()));
|
||||
String outputPath = StringUtil.notNullize(myArtifact.getOutputPath());
|
||||
final CopyToDirectoryInstructionCreator instructionCreator = new CopyToDirectoryInstructionCreator(builder, outputPath);
|
||||
|
||||
+10
-10
@@ -18,9 +18,9 @@ package org.jetbrains.jps.incremental.artifacts.instructions;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.incremental.IgnoredFilePatterns;
|
||||
import org.jetbrains.jps.JpsPathUtil;
|
||||
import org.jetbrains.jps.incremental.ModuleRootsIndex;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.incremental.artifacts.JarPathUtil;
|
||||
import org.jetbrains.jps.incremental.storage.BuildDataManager;
|
||||
|
||||
@@ -44,7 +44,7 @@ public abstract class ArtifactCompilerInstructionCreatorBase implements Artifact
|
||||
|
||||
public void addDirectoryCopyInstructions(@NotNull File directory, @Nullable SourceFileFilter filter) {
|
||||
final boolean copyExcluded = myInstructionsBuilder.getRootsIndex().isExcluded(directory);
|
||||
SourceFileFilter fileFilter = new SourceFileFilterImpl(filter, myInstructionsBuilder.getRootsIndex(), myInstructionsBuilder.getIgnoredFilePatterns(), copyExcluded);
|
||||
SourceFileFilter fileFilter = new SourceFileFilterImpl(filter, myInstructionsBuilder.getRootsIndex(), myInstructionsBuilder.getIgnoredFileIndex(), copyExcluded);
|
||||
DestinationInfo destination = createDirectoryDestination();
|
||||
if (destination != null) {
|
||||
ArtifactRootDescriptor descriptor = myInstructionsBuilder.createFileBasedRoot(directory, fileFilter, destination);
|
||||
@@ -57,7 +57,7 @@ public abstract class ArtifactCompilerInstructionCreatorBase implements Artifact
|
||||
@Override
|
||||
public void addExtractDirectoryInstruction(@NotNull File jarFile, @NotNull String pathInJar) {
|
||||
final SourceFileFilterImpl filter = new SourceFileFilterImpl(null, myInstructionsBuilder.getRootsIndex(),
|
||||
myInstructionsBuilder.getIgnoredFilePatterns(), false);
|
||||
myInstructionsBuilder.getIgnoredFileIndex(), false);
|
||||
DestinationInfo destination = createDirectoryDestination();
|
||||
if (destination != null) {
|
||||
ArtifactRootDescriptor descriptor = myInstructionsBuilder.createJarBasedRoot(jarFile, pathInJar, filter, destination);
|
||||
@@ -100,17 +100,17 @@ public abstract class ArtifactCompilerInstructionCreatorBase implements Artifact
|
||||
|
||||
private static class SourceFileFilterImpl extends SourceFileFilter {
|
||||
private final SourceFileFilter myBaseFilter;
|
||||
private final ModuleRootsIndex myRootsIndex;
|
||||
private final IgnoredFilePatterns myIgnoredFilePatterns;
|
||||
private final ModuleExcludeIndex myRootsIndex;
|
||||
private final IgnoredFileIndex myIgnoredFileIndex;
|
||||
private final boolean myIncludeExcluded;
|
||||
|
||||
private SourceFileFilterImpl(@Nullable SourceFileFilter baseFilter,
|
||||
@NotNull ModuleRootsIndex rootsIndex,
|
||||
IgnoredFilePatterns patterns,
|
||||
@NotNull ModuleExcludeIndex rootsIndex,
|
||||
IgnoredFileIndex patterns,
|
||||
boolean includeExcluded) {
|
||||
myBaseFilter = baseFilter;
|
||||
myRootsIndex = rootsIndex;
|
||||
myIgnoredFilePatterns = patterns;
|
||||
myIgnoredFileIndex = patterns;
|
||||
myIncludeExcluded = includeExcluded;
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ public abstract class ArtifactCompilerInstructionCreatorBase implements Artifact
|
||||
public boolean accept(@NotNull String fullFilePath, BuildDataManager dataManager) throws IOException {
|
||||
if (myBaseFilter != null && !myBaseFilter.accept(fullFilePath, dataManager)) return false;
|
||||
|
||||
if (myIgnoredFilePatterns.isIgnored(JpsPathUtil.getFileName(fullFilePath))) {
|
||||
if (myIgnoredFileIndex.isIgnored(JpsPathUtil.getFileName(fullFilePath))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
+9
-7
@@ -2,8 +2,8 @@ package org.jetbrains.jps.incremental.artifacts.instructions;
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.incremental.IgnoredFilePatterns;
|
||||
import org.jetbrains.jps.incremental.ModuleRootsIndex;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.incremental.artifacts.ArtifactBuildTarget;
|
||||
|
||||
import java.io.File;
|
||||
@@ -18,19 +18,21 @@ import java.util.Map;
|
||||
public class ArtifactInstructionsBuilderImpl implements ArtifactInstructionsBuilder {
|
||||
private final Map<String, JarInfo> myJarByPath;
|
||||
private final List<ArtifactRootDescriptor> myDescriptors;
|
||||
private final ModuleRootsIndex myRootsIndex;
|
||||
private final ModuleExcludeIndex myRootsIndex;
|
||||
private int myRootIndex;
|
||||
private final IgnoredFileIndex myIgnoredFileIndex;
|
||||
private ArtifactBuildTarget myBuildTarget;
|
||||
|
||||
public ArtifactInstructionsBuilderImpl(ModuleRootsIndex rootsIndex, ArtifactBuildTarget target) {
|
||||
public ArtifactInstructionsBuilderImpl(ModuleExcludeIndex rootsIndex, IgnoredFileIndex ignoredFileIndex, ArtifactBuildTarget target) {
|
||||
myRootsIndex = rootsIndex;
|
||||
myIgnoredFileIndex = ignoredFileIndex;
|
||||
myBuildTarget = target;
|
||||
myJarByPath = new HashMap<String, JarInfo>();
|
||||
myDescriptors = new ArrayList<ArtifactRootDescriptor>();
|
||||
}
|
||||
|
||||
public IgnoredFilePatterns getIgnoredFilePatterns() {
|
||||
return myRootsIndex.getIgnoredFilePatterns();
|
||||
public IgnoredFileIndex getIgnoredFileIndex() {
|
||||
return myIgnoredFileIndex;
|
||||
}
|
||||
|
||||
public boolean addDestination(@NotNull ArtifactRootDescriptor descriptor) {
|
||||
@@ -44,7 +46,7 @@ public class ArtifactInstructionsBuilderImpl implements ArtifactInstructionsBuil
|
||||
return true;
|
||||
}
|
||||
|
||||
public ModuleRootsIndex getRootsIndex() {
|
||||
public ModuleExcludeIndex getRootsIndex() {
|
||||
return myRootsIndex;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package org.jetbrains.jps.indices;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public interface IgnoredFileIndex {
|
||||
boolean isIgnored(String fileName);
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.jetbrains.jps.indices;
|
||||
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public interface ModuleExcludeIndex {
|
||||
boolean isExcluded(File file);
|
||||
|
||||
Collection<File> getModuleExcludes(JpsModule module);
|
||||
}
|
||||
+9
-6
@@ -1,7 +1,9 @@
|
||||
package org.jetbrains.jps.incremental;
|
||||
package org.jetbrains.jps.indices.impl;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -12,15 +14,15 @@ import java.util.regex.PatternSyntaxException;
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class IgnoredFilePatterns {
|
||||
public class IgnoredFileIndexImpl implements IgnoredFileIndex {
|
||||
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jps.IgnoredFilePatterns");
|
||||
private List<Pattern> myPatterns = new ArrayList<Pattern>();
|
||||
|
||||
public IgnoredFilePatterns(final String ignoredPatternString) {
|
||||
loadFromString(ignoredPatternString);
|
||||
public IgnoredFileIndexImpl(JpsModel model) {
|
||||
loadFromString(model.getGlobal().getFileTypesConfiguration().getIgnoredPatternString());
|
||||
}
|
||||
|
||||
public void loadFromString(String patterns) {
|
||||
private void loadFromString(String patterns) {
|
||||
myPatterns.clear();
|
||||
StringTokenizer tokenizer = new StringTokenizer(patterns, ";");
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
@@ -36,6 +38,7 @@ public class IgnoredFilePatterns {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIgnored(String fileName) {
|
||||
for (Pattern pattern : myPatterns) {
|
||||
if (pattern.matcher(fileName).matches()) {
|
||||
@@ -45,7 +48,7 @@ public class IgnoredFilePatterns {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String convertToJavaPattern(String wildcardPattern) {
|
||||
private static String convertToJavaPattern(String wildcardPattern) {
|
||||
wildcardPattern = StringUtil.replace(wildcardPattern, ".", "\\.");
|
||||
wildcardPattern = StringUtil.replace(wildcardPattern, "*?", ".+");
|
||||
wildcardPattern = StringUtil.replace(wildcardPattern, "?*", ".+");
|
||||
+6
-9
@@ -1,6 +1,7 @@
|
||||
package org.jetbrains.jps.incremental;
|
||||
package org.jetbrains.jps.indices.impl;
|
||||
|
||||
import org.jetbrains.jps.JpsPathUtil;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
|
||||
@@ -11,13 +12,11 @@ import java.util.*;
|
||||
* @author Eugene Zhuravlev
|
||||
* Date: 1/11/12
|
||||
*/
|
||||
public class ModuleRootsIndex {
|
||||
public class ModuleExcludeIndexImpl implements ModuleExcludeIndex {
|
||||
private final Set<File> myExcludedRoots = new HashSet<File>();
|
||||
private final Map<JpsModule, List<File>> myModuleToExcludesMap = new HashMap<JpsModule, List<File>>();
|
||||
private final IgnoredFilePatterns myIgnoredFilePatterns;
|
||||
|
||||
public ModuleRootsIndex(JpsModel model) {
|
||||
myIgnoredFilePatterns = new IgnoredFilePatterns(model.getGlobal().getFileTypesConfiguration().getIgnoredPatternString());
|
||||
public ModuleExcludeIndexImpl(JpsModel model) {
|
||||
final Collection<JpsModule> allModules = model.getProject().getModules();
|
||||
for (final JpsModule module : allModules) {
|
||||
final List<File> moduleExcludes = new ArrayList<File>();
|
||||
@@ -61,14 +60,12 @@ public class ModuleRootsIndex {
|
||||
}
|
||||
}
|
||||
|
||||
public IgnoredFilePatterns getIgnoredFilePatterns() {
|
||||
return myIgnoredFilePatterns;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isExcluded(File file) {
|
||||
return JpsPathUtil.isUnder(myExcludedRoots, file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<File> getModuleExcludes(JpsModule module) {
|
||||
return myModuleToExcludesMap.get(module);
|
||||
}
|
||||
@@ -8,6 +8,9 @@ import org.jetbrains.jps.JpsPathUtil;
|
||||
import org.jetbrains.jps.api.CanceledStatus;
|
||||
import org.jetbrains.jps.builders.impl.BuildRootIndexImpl;
|
||||
import org.jetbrains.jps.builders.impl.BuildTargetIndexImpl;
|
||||
import org.jetbrains.jps.indices.impl.IgnoredFileIndexImpl;
|
||||
import org.jetbrains.jps.indices.impl.ModuleExcludeIndexImpl;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.cmdline.ClasspathBootstrap;
|
||||
import org.jetbrains.jps.cmdline.ProjectDescriptor;
|
||||
import org.jetbrains.jps.incremental.*;
|
||||
@@ -74,13 +77,14 @@ public abstract class JpsBuildTestCase extends UsefulTestCase {
|
||||
protected ProjectDescriptor createProjectDescriptor(final BuildLoggingManager buildLoggingManager) {
|
||||
try {
|
||||
BuildTargetIndexImpl targetIndex = new BuildTargetIndexImpl(myModel);
|
||||
ModuleRootsIndex index = new ModuleRootsIndex(myModel);
|
||||
BuildRootIndexImpl buildRootIndex = new BuildRootIndexImpl(targetIndex, myModel, index, myDataStorageRoot);
|
||||
ModuleExcludeIndex index = new ModuleExcludeIndexImpl(myModel);
|
||||
IgnoredFileIndexImpl ignoredFileIndex = new IgnoredFileIndexImpl(myModel);
|
||||
BuildRootIndexImpl buildRootIndex = new BuildRootIndexImpl(targetIndex, myModel, index, myDataStorageRoot, ignoredFileIndex);
|
||||
BuildTargetsState targetsState = new BuildTargetsState(myDataStorageRoot, myModel, buildRootIndex);
|
||||
ProjectTimestamps timestamps = new ProjectTimestamps(myDataStorageRoot, targetsState);
|
||||
BuildDataManager dataManager = new BuildDataManager(myDataStorageRoot, targetsState, true);
|
||||
return new ProjectDescriptor(myModel, new BuildFSState(true), timestamps, dataManager, buildLoggingManager, index, targetsState,
|
||||
targetIndex, buildRootIndex);
|
||||
targetIndex, buildRootIndex, ignoredFileIndex);
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
|
||||
+3
-2
@@ -24,6 +24,7 @@ import org.jetbrains.jps.incremental.messages.BuildMessage;
|
||||
import org.jetbrains.jps.incremental.messages.CompilerMessage;
|
||||
import org.jetbrains.jps.incremental.messages.ProgressMessage;
|
||||
import org.jetbrains.jps.incremental.storage.TimestampStorage;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.model.JpsProject;
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
|
||||
import org.jetbrains.jps.model.java.compiler.JpsCompilerExcludes;
|
||||
@@ -526,14 +527,14 @@ public class AndroidPackagingBuilder extends TargetBuilder<AndroidProjectBuildTa
|
||||
? outputFilePath + RELEASE_SUFFIX
|
||||
: outputFilePath;
|
||||
|
||||
final IgnoredFilePatterns ignoredFilePatterns = context.getProjectDescriptor().rootsIndex.getIgnoredFilePatterns();
|
||||
final IgnoredFileIndex ignoredFileIndex = context.getProjectDescriptor().getIgnoredFileIndex();
|
||||
|
||||
final Map<AndroidCompilerMessageKind, List<String>> messages = AndroidApt
|
||||
.packageResources(target, -1, manifestFile.getPath(), resourceDirPaths, assetsDirPaths, outputPath, null,
|
||||
!releasePackage, 0, new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(File pathname) {
|
||||
return !ignoredFilePatterns.isIgnored(JpsPathUtil.getFileName(pathname.getPath()));
|
||||
return !ignoredFileIndex.isIgnored(JpsPathUtil.getFileName(pathname.getPath()));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+3
-2
@@ -22,7 +22,8 @@ import org.jetbrains.jps.android.AndroidJpsUtil;
|
||||
import org.jetbrains.jps.builders.*;
|
||||
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType;
|
||||
import org.jetbrains.jps.incremental.ModuleBuildTarget;
|
||||
import org.jetbrains.jps.incremental.ModuleRootsIndex;
|
||||
import org.jetbrains.jps.indices.IgnoredFileIndex;
|
||||
import org.jetbrains.jps.indices.ModuleExcludeIndex;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
|
||||
@@ -64,7 +65,7 @@ public class AndroidProjectBuildTarget extends BuildTarget<BuildRootDescriptor>
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<BuildRootDescriptor> computeRootDescriptors(JpsModel model, ModuleRootsIndex index) {
|
||||
public List<BuildRootDescriptor> computeRootDescriptors(JpsModel model, ModuleExcludeIndex index, IgnoredFileIndex ignoredFileIndex) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user