From bf4b5436ea7ee2cd383a1d4675600a6ed3d9dc51 Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 12 Dec 2012 11:41:51 +0400 Subject: [PATCH] external artifact builder: extract content of jar even if jar is excluded --- .../ArtifactCompilerInstructionCreatorBase.java | 3 ++- .../incremental/artifacts/ArtifactBuilderTest.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/instructions/ArtifactCompilerInstructionCreatorBase.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/instructions/ArtifactCompilerInstructionCreatorBase.java index 31dd00bfafeb..e4d6db4f3a70 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/instructions/ArtifactCompilerInstructionCreatorBase.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/instructions/ArtifactCompilerInstructionCreatorBase.java @@ -56,8 +56,9 @@ public abstract class ArtifactCompilerInstructionCreatorBase implements Artifact @Override public void addExtractDirectoryInstruction(@NotNull File jarFile, @NotNull String pathInJar) { + final boolean copyExcluded = myInstructionsBuilder.getRootsIndex().isExcluded(jarFile); final SourceFileFilterImpl filter = new SourceFileFilterImpl(null, myInstructionsBuilder.getRootsIndex(), - myInstructionsBuilder.getIgnoredFileIndex(), false); + myInstructionsBuilder.getIgnoredFileIndex(), copyExcluded); DestinationInfo destination = createDirectoryDestination(); if (destination != null) { ArtifactRootDescriptor descriptor = myInstructionsBuilder.createJarBasedRoot(jarFile, pathInJar, filter, destination); diff --git a/jps/jps-builders/testSrc/org/jetbrains/jps/incremental/artifacts/ArtifactBuilderTest.java b/jps/jps-builders/testSrc/org/jetbrains/jps/incremental/artifacts/ArtifactBuilderTest.java index 6577cd26175e..b55a0b4a75ad 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/jps/incremental/artifacts/ArtifactBuilderTest.java +++ b/jps/jps-builders/testSrc/org/jetbrains/jps/incremental/artifacts/ArtifactBuilderTest.java @@ -229,6 +229,19 @@ public class ArtifactBuilderTest extends ArtifactBuilderTestCase { .file("TestRunner.class")); } + public void testExtractDirectoryFromExcludedJar() throws IOException { + String jarPath = createFile("dir/lib/j.jar"); + FileUtil.copy(new File(getJUnitJarPath()), new File(jarPath)); + JpsModule module = addModule("m"); + String libDir = PathUtil.getParentPath(jarPath); + module.getContentRootsList().addUrl(JpsPathUtil.pathToUrl(PathUtil.getParentPath(libDir))); + module.getExcludeRootsList().addUrl(JpsPathUtil.pathToUrl(libDir)); + final JpsArtifact a = addArtifact("a", root().extractedDir(jarPath, "/junit/textui/")); + buildAll(); + assertOutput(a, fs().file("ResultPrinter.class") + .file("TestRunner.class")); + } + public void testPackExtractedDirectory() { final JpsArtifact a = addArtifact("a", root().archive("a.jar").extractedDir(getJUnitJarPath(), "/junit/textui/")); buildAll();