コード例 #1
0
ファイル: URLImportTask.java プロジェクト: cniweb/ant-contrib
  public void execute() throws BuildException {

    IvyAdapter adapter = null;

    try {
      Class.forName("org.apache.ivy.Ivy");
      adapter = new Ivy20Adapter();
    } catch (ClassNotFoundException e) {
      adapter = new Ivy14Adapter();
    }

    String setId = org + "." + module + "." + rev + ".fileset";
    adapter.configure(this);
    adapter.fileset(this, setId);

    FileSet fileset = (FileSet) getProject().getReference(setId);

    DirectoryScanner scanner = fileset.getDirectoryScanner(getProject());

    String files[] = scanner.getIncludedFiles();

    File file = new File(scanner.getBasedir(), files[0]);

    File importFile = null;

    if ("xml".equalsIgnoreCase(type)) {
      importFile = file;
    } else if ("jar".equalsIgnoreCase(type) || "zip".equalsIgnoreCase(type)) {
      File dir = new File(file.getParentFile(), file.getName() + ".extracted");
      if (!dir.exists() || dir.lastModified() < file.lastModified()) {
        dir.mkdir();
        Expand expand = (Expand) getProject().createTask("unjar");
        expand.setSrc(file);
        expand.setDest(dir);
        expand.perform();
      }
      importFile = new File(dir, resource);
      if (!importFile.exists()) {
        throw new BuildException("Cannot find a '" + resource + "' file in " + file.getName());
      }
    } else {
      throw new BuildException("Don't know what to do with type: " + type);
    }

    log("Importing " + importFile.getName(), Project.MSG_INFO);

    super.setFile(importFile.getAbsolutePath());
    super.execute();

    log("Import complete.", Project.MSG_INFO);
  }