external compiler: some interfaces extracted

This commit is contained in:
nik
2012-10-01 15:15:14 +04:00
parent a80acfdebc
commit 411a8e790a
16 changed files with 114 additions and 60 deletions
@@ -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());
@@ -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);
@@ -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;
}
@@ -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);
}
@@ -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, "?*", ".+");
@@ -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);
@@ -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()));
}
});
@@ -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();
}