external artifact builder: extract content of jar even if jar is excluded

This commit is contained in:
nik
2012-12-12 11:42:22 +04:00
parent 84a310e81a
commit bf4b5436ea
2 changed files with 15 additions and 1 deletions
@@ -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);
@@ -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();