FELIX-831: update to version 0.0.295 of the Bnd tool

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@722837 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundleplugin/pom.xml b/bundleplugin/pom.xml
index e29db52..6318a90 100644
--- a/bundleplugin/pom.xml
+++ b/bundleplugin/pom.xml
@@ -43,7 +43,7 @@
   <dependency>
    <groupId>biz.aQute</groupId>
    <artifactId>bndlib</artifactId>
-   <version>0.0.255</version>
+   <version>0.0.295</version>
   </dependency>
   <dependency>
     <groupId>net.sf.kxml</groupId>
@@ -137,4 +137,18 @@
    <scope>test</scope>
   </dependency>
  </dependencies>
+
+ <repositories>
+  <repository>
+   <id>aQute</id>
+   <url>http://www.aQute.biz/repo</url>
+   <releases>
+    <updatePolicy>never</updatePolicy>
+   </releases>
+   <snapshots>
+    <enabled>false</enabled>
+   </snapshots>
+  </repository>
+ </repositories>
+
 </project>
diff --git a/bundleplugin/src/main/java/aQute/lib/osgi/Builder.java b/bundleplugin/src/main/java/aQute/lib/osgi/Builder.java
deleted file mode 100644
index 80afa3e..0000000
--- a/bundleplugin/src/main/java/aQute/lib/osgi/Builder.java
+++ /dev/null
@@ -1,776 +0,0 @@
-/* Copyright 2006 aQute SARL 
- * Licensed under the Apache License, Version 2.0, see http://www.apache.org/licenses/LICENSE-2.0 */
-package aQute.lib.osgi;
-
-import java.io.*;
-import java.util.*;
-import java.util.jar.*;
-import java.util.regex.*;
-import java.util.zip.*;
-
-/**
- * Include-Resource: ( [name '=' ] file )+
- * 
- * Private-Package: package-decl ( ',' package-decl )*
- * 
- * Export-Package: package-decl ( ',' package-decl )*
- * 
- * Import-Package: package-decl ( ',' package-decl )*
- * 
- * @version $Revision: 1.4 $
- */
-public class Builder extends Analyzer {
-    private static final int SPLIT_MERGE_LAST  = 1;
-    private static final int SPLIT_MERGE_FIRST = 2;
-    private static final int SPLIT_ERROR       = 3;
-    private static final int SPLIT_FIRST       = 4;
-    private static final int SPLIT_DEFAULT     = 0;
-
-    List                     tempJars          = new ArrayList();
-    boolean                  sources           = false;
-    File[]                   sourcePath;
-    Pattern                  NAME_URL          = Pattern
-                                                       .compile("(.*)(http://.*)");
-
-    public Jar build() throws Exception {
-        begin();
-
-        dot = new Jar("dot");
-        doPrebuild(dot, parseHeader(getProperty("-prebuild")));
-        doExpand(dot);
-        doIncludeResources(dot);
-
-        doConditional(dot);
-
-        dot.setManifest(calcManifest());
-        // This must happen after we analyzed so
-        // we know what it is on the classpath
-        addSources(dot);
-        if (getProperty(POM) != null)
-            doPom(dot);
-
-        doVerify(dot);
-        if (dot.getResources().isEmpty())
-            error("The JAR is empty");
-
-        dot.updateModified(lastModified());
-        return dot;
-    }
-
-    void begin() {
-        super.begin();
-        if (getProperty(IMPORT_PACKAGE) == null)
-            setProperty(IMPORT_PACKAGE, "*");
-
-        sources = getProperty(SOURCES) != null;
-    }
-
-    private void doConditional(Jar dot) throws IOException {
-        Map conditionals = getHeader(CONDITIONAL_PACKAGE);
-        if (conditionals != null && conditionals.size() > 0) {
-            int size;
-            do {
-                size = dot.getDirectories().size();
-                analyze();
-                analyzed = false;
-                Map imports = getImports();
-
-                Map filtered = merge(CONDITIONAL_PACKAGE, conditionals,
-                        imports, new HashSet());
-
-                // remove existing packages to prevent merge errors
-                filtered.keySet().removeAll(dot.getPackages());
-                filtered = replaceWithPattern(filtered);
-                doExpand(dot, CONDITIONAL_PACKAGE, filtered);
-            } while (dot.getDirectories().size() > size);
-        }
-    }
-
-    /**
-     * Intercept the call to analyze and cleanup versions after we have analyzed
-     * the setup. We do not want to cleanup if we are going to verify.
-     */
-
-    public void analyze() throws IOException {
-        super.analyze();
-        cleanupVersion(imports);
-        cleanupVersion(exports);
-        String version = getProperty(BUNDLE_VERSION);
-        if (version != null)
-            setProperty(BUNDLE_VERSION, cleanupVersion(version));
-    }
-
-    public void cleanupVersion(Map mapOfMap) {
-        for (Iterator e = mapOfMap.entrySet().iterator(); e.hasNext();) {
-            Map.Entry entry = (Map.Entry) e.next();
-            Map attributes = (Map) entry.getValue();
-            if (attributes.containsKey("version")) {
-                attributes.put("version", cleanupVersion((String) attributes
-                        .get("version")));
-            }
-        }
-    }
-
-    /**
-     * Clean up version parameters. Other builders use more fuzzy definitions of
-     * the version syntax. This method cleans up such a version to match an OSGi
-     * version.
-     * 
-     * @param version
-     * @return
-     */
-    static Pattern fuzzyVersion  = Pattern
-                                         .compile(
-                                                 "(\\d+)(\\.(\\d+)(\\.(\\d+))?)?([^a-zA-Z0-9](.*))?",
-                                                 Pattern.DOTALL);
-    static Pattern fuzzyModifier = Pattern.compile("(\\d+[.-])*(.*)",
-                                         Pattern.DOTALL);
-
-    static Pattern nummeric      = Pattern.compile("\\d*");
-
-    static public String cleanupVersion(String version) {
-        Matcher m = fuzzyVersion.matcher(version);
-        if (m.matches()) {
-            StringBuffer result = new StringBuffer();
-            String d1 = m.group(1);
-            String d2 = m.group(3);
-            String d3 = m.group(5);
-            String qualifier = m.group(7);
-
-            if (d1 != null) {
-                result.append(d1);
-                if (d2 != null) {
-                    result.append(".");
-                    result.append(d2);
-                    if (d3 != null) {
-                        result.append(".");
-                        result.append(d3);
-                        if (qualifier != null) {
-                            result.append(".");
-                            cleanupModifier(result, qualifier);
-                        }
-                    } else if (qualifier != null) {
-                        result.append(".0.");
-                        cleanupModifier(result, qualifier);
-                    }
-                } else if (qualifier != null) {
-                    result.append(".0.0.");
-                    cleanupModifier(result, qualifier);
-                }
-                return result.toString();
-            }
-        }
-        return version;
-    }
-
-    static void cleanupModifier(StringBuffer result, String modifier) {
-        Matcher m = fuzzyModifier.matcher(modifier);
-        if (m.matches())
-            modifier = m.group(2);
-
-        for (int i = 0; i < modifier.length(); i++) {
-            char c = modifier.charAt(i);
-            if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z')
-                    || (c >= 'A' && c <= 'Z') || c == '_' || c == '-')
-                result.append(c);
-        }
-    }
-
-    /**
-     * 
-     */
-    private void addSources(Jar dot) {
-        if (!sources)
-            return;
-
-        try {
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
-            getProperties().store(out, "Generated by BND, at " + new Date());
-            dot.putResource("OSGI-OPT/bnd.bnd", new EmbeddedResource(out
-                    .toByteArray(), 0));
-            out.close();
-        } catch (Exception e) {
-            error("Can not embed bnd file in JAR: " + e);
-        }
-
-        for (Iterator cpe = classspace.keySet().iterator(); cpe.hasNext();) {
-            String path = (String) cpe.next();
-            path = path.substring(0, path.length() - ".class".length())
-                    + ".java";
-
-            for (int i = 0; i < sourcePath.length; i++) {
-                File root = sourcePath[i];
-                File f = getFile(root, path);
-                if (f.exists()) {
-                    dot
-                            .putResource("OSGI-OPT/src/" + path,
-                                    new FileResource(f));
-                }
-            }
-        }
-    }
-
-    private void doVerify(Jar dot) throws Exception {
-        Verifier verifier = new Verifier(dot, getProperties());
-        verifier.setPedantic(isPedantic());
-        verifier.verify();
-        errors.addAll(verifier.getErrors());
-        warnings.addAll(verifier.getWarnings());
-    }
-
-    private void doExpand(Jar jar) throws IOException {
-        if (classpath.size() == 0
-                && (getProperty(EXPORT_PACKAGE) != null || getProperty(PRIVATE_PACKAGE) != null))
-            warning("Classpath is empty. Private-Package and Export-Package can only expand from the classpath when there is one");
-
-        Map prive = replaceWithPattern(getHeader(Analyzer.PRIVATE_PACKAGE));
-        Map export = replaceWithPattern(getHeader(Analyzer.EXPORT_PACKAGE));
-        if (prive.isEmpty() && export.isEmpty()) {
-            warnings
-                    .add("Neither Export-Package nor Private-Package is set, therefore no packages will be included");
-        }
-        doExpand(jar, EXPORT_PACKAGE, export);
-        doExpand(jar, PRIVATE_PACKAGE, prive);
-    }
-
-    private void doExpand(Jar jar, String name, Map instructions) {
-        Set superfluous = new HashSet(instructions.keySet());
-        for (Iterator c = classpath.iterator(); c.hasNext();) {
-            Jar now = (Jar) c.next();
-            doExpand(jar, instructions, now, superfluous);
-        }
-        if (superfluous.size() > 0) {
-            StringBuffer sb = new StringBuffer();
-            String del = "Instructions for " + name + " that are never used: ";
-            for (Iterator i = superfluous.iterator(); i.hasNext();) {
-                Instruction p = (Instruction) i.next();
-                sb.append(del);
-                sb.append(p.getPattern());
-                del = ", ";
-            }
-            warning(sb.toString());
-        }
-    }
-
-    /**
-     * Iterate over each directory in the class path entry and check if that
-     * directory is a desired package.
-     * 
-     * @param included
-     * @param classpathEntry
-     */
-    private void doExpand(Jar jar, Map included, Jar classpathEntry,
-            Set superfluous) {
-
-        loop: for (Iterator p = classpathEntry.getDirectories().entrySet()
-                .iterator(); p.hasNext();) {
-            Map.Entry directory = (Map.Entry) p.next();
-            String path = (String) directory.getKey();
-
-            if (doNotCopy.matcher(getName(path)).matches())
-                continue;
-
-            if (directory.getValue() == null)
-                continue;
-
-            String pack = path.replace('/', '.');
-            Instruction instr = matches(included, pack, superfluous);
-            if (instr != null) {
-                // System.out.println("Pattern match: " + pack + " " +
-                // instr.getPattern() + " " + instr.isNegated());
-                if (!instr.isNegated()) {
-                    Map contents = (Map) directory.getValue();
-
-                    // What to do with split packages? Well if this
-                    // directory already exists, we will check the strategy
-                    // and react accordingly.
-                    boolean overwriteResource = true;
-                    if (jar.hasDirectory(path)) {
-                        Map directives = (Map) included.get(instr);
-
-                        switch (getSplitStrategy((String) directives
-                                .get(SPLIT_PACKAGE_DIRECTIVE))) {
-                        case SPLIT_MERGE_LAST:
-                            overwriteResource = true;
-                            break;
-
-                        case SPLIT_MERGE_FIRST:
-                            overwriteResource = false;
-                            break;
-
-                        case SPLIT_ERROR:
-                            error("Split package generates error: " + pack);
-                            continue loop;
-
-                        case SPLIT_FIRST:
-                            continue loop;
-
-                        default:
-                            // Default is like merge-first, but with a warning
-                            warning("There are split packages, use directive -split-package:=(merge-first|merge-last) on instruction to get rid of this warning: "
-                                    + pack
-                                    + ", classpath: "
-                                    + classpath
-                                    + " from: " + classpathEntry.source);
-                            overwriteResource = false;
-                            break;
-                        }
-                    }
-                    jar.addDirectory(contents, overwriteResource);
-                }
-            }
-        }
-    }
-
-    private int getSplitStrategy(String type) {
-        if (type == null)
-            return SPLIT_DEFAULT;
-
-        if (type.equals("merge-last"))
-            return SPLIT_MERGE_LAST;
-
-        if (type.equals("merge-first"))
-            return SPLIT_MERGE_FIRST;
-
-        if (type.equals("error"))
-            return SPLIT_ERROR;
-
-        if (type.equals("first"))
-            return SPLIT_FIRST;
-
-        error("Invalid strategy for split-package: " + type);
-        return SPLIT_DEFAULT;
-    }
-
-    private Map replaceWithPattern(Map header) {
-        Map map = new LinkedHashMap();
-        for (Iterator e = header.entrySet().iterator(); e.hasNext();) {
-            Map.Entry entry = (Map.Entry) e.next();
-            String pattern = (String) entry.getKey();
-            Instruction instr = Instruction.getPattern(pattern);
-            map.put(instr, entry.getValue());
-        }
-        return map;
-    }
-
-    private Instruction matches(Map instructions, String pack,
-            Set superfluousPatterns) {
-        for (Iterator i = instructions.keySet().iterator(); i.hasNext();) {
-            Instruction pattern = (Instruction) i.next();
-            if (pattern.matches(pack)) {
-                superfluousPatterns.remove(pattern);
-                return pattern;
-            }
-        }
-        return null;
-    }
-
-    private Map getHeader(String string) {
-        if (string == null)
-            return new LinkedHashMap();
-        return parseHeader(getProperty(string));
-    }
-
-    /**
-     * Parse the Bundle-Includes header. Files in the bundles Include header are
-     * included in the jar. The source can be a directory or a file.
-     * 
-     * @throws IOException
-     * @throws FileNotFoundException
-     */
-    private void doIncludeResources(Jar jar) throws Exception {
-        Macro macro = new Macro(getProperties(), this);
-
-        String includes = getProperty("Bundle-Includes");
-        if (includes == null)
-            includes = getProperty("Include-Resource");
-        else
-            warnings
-                    .add("Please use Include-Resource instead of Bundle-Includes");
-
-        if (includes == null)
-            return;
-
-        for (Iterator i = getClauses(includes).iterator(); i.hasNext();) {
-            boolean preprocess = false;
-            String clause = (String) i.next();
-            if (clause.startsWith("{") && clause.endsWith("}")) {
-                preprocess = true;
-                clause = clause.substring(1, clause.length() - 1).trim();
-            }
-
-            Map extra = new HashMap();
-            int n = clause.indexOf(';');
-            if (n > 0) {
-                String attributes = clause.substring(n + 1);
-                String parts[] = attributes.split("\\s*;\\s*");
-                for (int j = 0; j < parts.length; j++) {
-                    String assignment[] = parts[j].split("\\s*=\\s*");
-                    if (assignment.length == 2)
-                        extra.put(assignment[0], assignment[1]);
-                    else
-                        error("Invalid attribute on Include-Resource: "
-                                + clause);
-                }
-                clause = clause.substring(0, n);
-            }
-
-            if (clause.startsWith("@")) {
-                extractFromJar(jar, clause.substring(1));
-            } else {
-                String parts[] = clause.split("\\s*=\\s*");
-
-                String source;
-                File sourceFile;
-                String destinationPath;
-
-                if (parts.length == 1) {
-                    // Just a copy, destination path defined by
-                    // source path.
-                    source = parts[0];
-                    sourceFile = getFile(base, source);
-                    // Directories should be copied to the root
-                    // but files to their file name ...
-                    if (sourceFile.isDirectory())
-                        destinationPath = "";
-                    else
-                        destinationPath = sourceFile.getName();
-                } else {
-                    source = parts[1];
-                    sourceFile = getFile(base, source);
-                    destinationPath = parts[0];
-                }
-
-                // Some people insist on ending a directory with
-                // a slash ... it now also works if you do /=dir
-                if (destinationPath.endsWith("/"))
-                    destinationPath = destinationPath.substring(0,
-                            destinationPath.length() - 1);
-
-                if (!sourceFile.exists()) {
-                    Jar src = getJarFromName(source, "Include-Resource "
-                            + source);
-                    if (src != null) {
-                        JarResource jarResource = new JarResource(src);
-                        jar.putResource(destinationPath, jarResource);
-                    } else {
-                        error("Input file does not exist: " + source);
-                    }
-                } else
-                    copy(jar, destinationPath, sourceFile, preprocess ? macro
-                            : null, extra);
-            }
-        }
-    }
-
-    /**
-     * Extra resources from a Jar and add them to the given jar. The clause is
-     * the
-     * 
-     * @param jar
-     * @param clauses
-     * @param i
-     * @throws ZipException
-     * @throws IOException
-     */
-    private void extractFromJar(Jar jar, String name) throws ZipException,
-            IOException {
-        // Inline all resources and classes from another jar
-        // optionally appended with a modified regular expression
-        // like @zip.jar!/META-INF/MANIFEST.MF
-        int n = name.lastIndexOf("!/");
-        Pattern filter = null;
-        if (n > 0) {
-            String fstring = name.substring(n + 2);
-            name = name.substring(0, n);
-            filter = wildcard(fstring);
-        }
-        Jar sub = getJarFromName(name, "extract from jar");
-        if (sub == null)
-            error("Can not find JAR file " + name);
-        else {
-            jar.addAll(sub, filter);
-            tempJars.add(sub);
-        }
-    }
-
-    private Pattern wildcard(String spec) {
-        StringBuffer sb = new StringBuffer();
-        for (int j = 0; j < spec.length(); j++) {
-            char c = spec.charAt(j);
-            switch (c) {
-            case '.':
-                sb.append("\\.");
-                break;
-
-            case '*':
-                // test for ** (all directories)
-                if (j < spec.length() - 1 && spec.charAt(j + 1) == '*') {
-                    sb.append(".*");
-                    j++;
-                } else
-                    sb.append("[^/]*");
-                break;
-            default:
-                sb.append(c);
-                break;
-            }
-        }
-        String s = sb.toString();
-        try {
-            return Pattern.compile(s);
-        } catch (Exception e) {
-            error("Invalid regular expression on wildcarding: " + spec
-                    + " used *");
-        }
-        return null;
-    }
-
-    private void copy(Jar jar, String path, File from, Macro macro, Map extra)
-            throws Exception {
-        if (doNotCopy.matcher(from.getName()).matches())
-            return;
-
-        if (from.isDirectory()) {
-            String next = path;
-            if (next.length() != 0)
-                next += '/';
-
-            File files[] = from.listFiles();
-            for (int i = 0; i < files.length; i++) {
-                copy(jar, next + files[i].getName(), files[i], macro, extra);
-            }
-        } else {
-            if (from.exists()) {
-                if (macro != null) {
-                    String content = read(from);
-                    content = macro.process(content);
-                    Resource resource = new EmbeddedResource(content
-                            .getBytes("UTF-8"), from.lastModified());
-
-                    String x = (String) extra.get("extra");
-                    if (x != null)
-                        resource.setExtra(x);
-                    jar.putResource(path, resource);
-                } else
-                    jar.putResource(path, new FileResource(from));
-            } else {
-                error("Input file does not exist: " + from);
-            }
-        }
-    }
-
-    private String read(File from) throws Exception {
-        long size = from.length();
-        byte[] buffer = new byte[(int) size];
-        FileInputStream in = new FileInputStream(from);
-        in.read(buffer);
-        in.close();
-        return new String(buffer, "UTF-8");
-    }
-
-    private String getName(String where) {
-        int n = where.lastIndexOf('/');
-        if (n < 0)
-            return where;
-
-        return where.substring(n + 1);
-    }
-
-    public void setSourcepath(File[] files) {
-        sourcePath = files;
-    }
-
-    /**
-     * Create a POM reseource for Maven containing as much information as
-     * possible from the manifest.
-     * 
-     * @param output
-     * @param builder
-     * @throws FileNotFoundException
-     * @throws IOException
-     */
-    public void doPom(Jar dot) throws FileNotFoundException, IOException {
-        {
-            Manifest manifest = dot.getManifest();
-            String name = manifest.getMainAttributes().getValue(
-                    Analyzer.BUNDLE_NAME);
-            String description = manifest.getMainAttributes().getValue(
-                    Analyzer.BUNDLE_DESCRIPTION);
-            String docUrl = manifest.getMainAttributes().getValue(
-                    Analyzer.BUNDLE_DOCURL);
-            String version = manifest.getMainAttributes().getValue(
-                    Analyzer.BUNDLE_VERSION);
-            String bundleVendor = manifest.getMainAttributes().getValue(
-                    Analyzer.BUNDLE_VENDOR);
-            ByteArrayOutputStream s = new ByteArrayOutputStream();
-            PrintStream ps = new PrintStream(s);
-            String bsn = manifest.getMainAttributes().getValue(
-                    Analyzer.BUNDLE_SYMBOLICNAME);
-            String licenses = manifest.getMainAttributes().getValue(
-                    BUNDLE_LICENSE);
-
-            if (bsn == null) {
-                errors
-                        .add("Can not create POM unless Bundle-SymbolicName is set");
-                return;
-            }
-
-            bsn = bsn.trim();
-            int n = bsn.lastIndexOf('.');
-            if (n <= 0) {
-                errors
-                        .add("Can not create POM unless Bundle-SymbolicName contains a .");
-                ps.close();
-                s.close();
-                return;
-            }
-            String groupId = bsn.substring(0, n);
-            String artifactId = bsn.substring(n + 1);
-            ps
-                    .println("<project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd'>");
-            ps.println("  <modelVersion>4.0.0</modelVersion>");
-            ps.println("  <groupId>" + groupId + "</groupId>");
-
-            n = artifactId.indexOf(';');
-            if (n > 0)
-                artifactId = artifactId.substring(0, n).trim();
-
-            ps.println("  <artifactId>" + artifactId + "</artifactId>");
-            ps.println("  <version>" + version + "</version>");
-            if (description != null) {
-                ps.println("  <description>");
-                ps.print("    ");
-                ps.println(description);
-                ps.println("  </description>");
-            }
-            if (name != null) {
-                ps.print("  <name>");
-                ps.print(name);
-                ps.println("</name>");
-            }
-            if (docUrl != null) {
-                ps.print("  <url>");
-                ps.print(docUrl);
-                ps.println("</url>");
-            }
-
-            if (bundleVendor != null) {
-                Matcher m = NAME_URL.matcher(bundleVendor);
-                String namePart = bundleVendor;
-                String urlPart = null;
-                if (m.matches()) {
-                    namePart = m.group(1);
-                    urlPart = m.group(2);
-                }
-                ps.println("  <organization>");
-                ps.print("    <name>");
-                ps.print(namePart.trim());
-                ps.println("</name>");
-                if (urlPart != null) {
-                    ps.print("    <url>");
-                    ps.print(urlPart.trim());
-                    ps.println("</url>");
-                }
-                ps.println("  </organization>");
-            }
-            if (licenses != null) {
-                ps.println("  <licenses>");
-                Map map = parseHeader(licenses);
-                for (Iterator e = map.entrySet().iterator(); e.hasNext();) {
-                    Map.Entry entry = (Map.Entry) e.next();
-                    ps.println("    <license>");
-                    Map values = (Map) entry.getValue();
-                    print(ps, values, "name", "name", (String) values
-                            .get("url"));
-                    print(ps, values, "url", "url", null);
-                    print(ps, values, "distribution", "distribution", "repo");
-                    ps.println("    </license>");
-                }
-                ps.println("  </licenses>");
-            }
-            ps.println("</project>");
-            ps.close();
-            s.close();
-            dot
-                    .putResource("pom.xml", new EmbeddedResource(s
-                            .toByteArray(), 0));
-        }
-    }
-
-    /**
-     * NEW
-     * 
-     */
-    void doPrebuild(Jar dot, Map clauses) {
-        for (Iterator i = clauses.entrySet().iterator(); i.hasNext();) {
-            Map.Entry entry = (Map.Entry) i.next();
-            String name = (String) entry.getKey();
-            Map args = (Map) entry.getValue();
-            File file = getFile(base, name);
-            File dir = file.getParentFile();
-            if (!dir.exists())
-                error("No directory for prebuild: " + file.getAbsolutePath());
-            else {
-                Instruction instr = Instruction.getPattern(file.getName());
-                File[] children = dir.listFiles();
-                for (int c = 0; c < children.length; c++) {
-                    File child = children[c];
-                    if (instr.matches(child.getName()) && !instr.isNegated()) {
-                        try {
-                            progress("Prebuilding "+child);
-                            doPrebuild(dot, child, args);
-                        } catch (Exception e) {
-                            error("Can not build: "+child);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    void doPrebuild(Jar dot, File f, Map args) throws Exception {
-        Builder builder = new Builder();
-        builder.setBase(base);
-        builder.setProperties(f);
-
-        Properties p = new Properties();
-        p.putAll(getProperties());
-        p.keySet().removeAll(builder.getProperties().keySet());
-        builder.getProperties().putAll(p);
-
-        Jar jar = builder.build();
-        String path = (String) args.get("path");
-        if (path != null)
-            path = f.getName();
-
-        dot.putResource(path, new JarResource(jar));
-    }
-
-    /**
-     * Utility function to print a tag from a map
-     * 
-     * @param ps
-     * @param values
-     * @param string
-     * @param tag
-     * @param object
-     */
-    private void print(PrintStream ps, Map values, String string, String tag,
-            String object) {
-        String value = (String) values.get(string);
-        if (value == null)
-            value = object;
-        if (value == null)
-            return;
-        ps.println("    <" + tag + ">" + value.trim() + "</" + tag + ">");
-    }
-
-    public void close() {
-        for (Iterator j = tempJars.iterator(); j.hasNext();) {
-            Jar jar = (Jar) j.next();
-            jar.close();
-        }
-        super.close();
-    }
-}
diff --git a/bundleplugin/src/main/java/org/apache/felix/bundleplugin/DependencyEmbedder.java b/bundleplugin/src/main/java/org/apache/felix/bundleplugin/DependencyEmbedder.java
index 3a89d4e..6e9cf18 100644
--- a/bundleplugin/src/main/java/org/apache/felix/bundleplugin/DependencyEmbedder.java
+++ b/bundleplugin/src/main/java/org/apache/felix/bundleplugin/DependencyEmbedder.java
@@ -30,9 +30,9 @@
 import org.apache.maven.plugin.MojoExecutionException;
 import org.codehaus.plexus.util.StringUtils;
 
-import aQute.lib.header.OSGiHeader;
 import aQute.lib.osgi.Analyzer;
 import aQute.lib.osgi.Instruction;
+import aQute.libg.header.OSGiHeader;
 
 
 /**