Search in sources :

Example 86 with Path

use of org.apache.tools.ant.types.Path in project tomcat by apache.

the class AntCompiler method generateClass.

// --------------------------------------------------------- Public Methods
/**
     * Compile the servlet from .java file to .class file
     */
@Override
protected void generateClass(String[] smap) throws FileNotFoundException, JasperException, Exception {
    long t1 = 0;
    if (log.isDebugEnabled()) {
        t1 = System.currentTimeMillis();
    }
    String javaEncoding = ctxt.getOptions().getJavaEncoding();
    String javaFileName = ctxt.getServletJavaFileName();
    String classpath = ctxt.getClassPath();
    StringBuilder errorReport = new StringBuilder();
    StringBuilder info = new StringBuilder();
    info.append("Compile: javaFileName=" + javaFileName + "\n");
    info.append("    classpath=" + classpath + "\n");
    // Start capturing the System.err output for this thread
    SystemLogHandler.setThread();
    // Initializing javac task
    getProject();
    Javac javac = (Javac) project.createTask("javac");
    // Initializing classpath
    Path path = new Path(project);
    path.setPath(System.getProperty("java.class.path"));
    info.append("    cp=" + System.getProperty("java.class.path") + "\n");
    StringTokenizer tokenizer = new StringTokenizer(classpath, File.pathSeparator);
    while (tokenizer.hasMoreElements()) {
        String pathElement = tokenizer.nextToken();
        File repository = new File(pathElement);
        path.setLocation(repository);
        info.append("    cp=" + repository + "\n");
    }
    if (log.isDebugEnabled()) {
        log.debug("Using classpath: " + System.getProperty("java.class.path") + File.pathSeparator + classpath);
    }
    // Initializing sourcepath
    Path srcPath = new Path(project);
    srcPath.setLocation(options.getScratchDir());
    info.append("    work dir=" + options.getScratchDir() + "\n");
    // Initialize and set java extensions
    String exts = System.getProperty("java.ext.dirs");
    if (exts != null) {
        Path extdirs = new Path(project);
        extdirs.setPath(exts);
        javac.setExtdirs(extdirs);
        info.append("    extension dir=" + exts + "\n");
    }
    // See Bugzilla 31257
    if (ctxt.getOptions().getFork()) {
        String endorsed = System.getProperty("java.endorsed.dirs");
        if (endorsed != null) {
            Javac.ImplementationSpecificArgument endorsedArg = javac.createCompilerArg();
            endorsedArg.setLine("-J-Djava.endorsed.dirs=" + quotePathList(endorsed));
            info.append("    endorsed dir=" + quotePathList(endorsed) + "\n");
        } else {
            info.append("    no endorsed dirs specified\n");
        }
    }
    // Configure the compiler object
    javac.setEncoding(javaEncoding);
    javac.setClasspath(path);
    javac.setDebug(ctxt.getOptions().getClassDebugInfo());
    javac.setSrcdir(srcPath);
    javac.setTempdir(options.getScratchDir());
    javac.setOptimize(!ctxt.getOptions().getClassDebugInfo());
    javac.setFork(ctxt.getOptions().getFork());
    info.append("    srcDir=" + srcPath + "\n");
    // Set the Java compiler to use
    if (options.getCompiler() != null) {
        javac.setCompiler(options.getCompiler());
        info.append("    compiler=" + options.getCompiler() + "\n");
    }
    if (options.getCompilerTargetVM() != null) {
        javac.setTarget(options.getCompilerTargetVM());
        info.append("   compilerTargetVM=" + options.getCompilerTargetVM() + "\n");
    }
    if (options.getCompilerSourceVM() != null) {
        javac.setSource(options.getCompilerSourceVM());
        info.append("   compilerSourceVM=" + options.getCompilerSourceVM() + "\n");
    }
    // Build includes path
    PatternSet.NameEntry includes = javac.createInclude();
    includes.setName(ctxt.getJavaPath());
    info.append("    include=" + ctxt.getJavaPath() + "\n");
    BuildException be = null;
    try {
        if (ctxt.getOptions().getFork()) {
            javac.execute();
        } else {
            synchronized (javacLock) {
                javac.execute();
            }
        }
    } catch (BuildException e) {
        be = e;
        log.error(Localizer.getMessage("jsp.error.javac"), e);
        log.error(Localizer.getMessage("jsp.error.javac.env") + info.toString());
    }
    errorReport.append(logger.getReport());
    // Stop capturing the System.err output for this thread
    String errorCapture = SystemLogHandler.unsetThread();
    if (errorCapture != null) {
        errorReport.append(System.lineSeparator());
        errorReport.append(errorCapture);
    }
    if (!ctxt.keepGenerated()) {
        File javaFile = new File(javaFileName);
        javaFile.delete();
    }
    if (be != null) {
        String errorReportString = errorReport.toString();
        log.error(Localizer.getMessage("jsp.error.compilation", javaFileName, errorReportString));
        JavacErrorDetail[] javacErrors = ErrorDispatcher.parseJavacErrors(errorReportString, javaFileName, pageNodes);
        if (javacErrors != null) {
            errDispatcher.javacError(javacErrors);
        } else {
            errDispatcher.javacError(errorReportString, be);
        }
    }
    if (log.isDebugEnabled()) {
        long t2 = System.currentTimeMillis();
        log.debug("Compiled " + ctxt.getServletJavaFileName() + " " + (t2 - t1) + "ms");
    }
    logger = null;
    project = null;
    if (ctxt.isPrototypeMode()) {
        return;
    }
    // JSR45 Support
    if (!options.isSmapSuppressed()) {
        SmapUtil.installSmap(smap);
    }
}
Also used : Path(org.apache.tools.ant.types.Path) Javac(org.apache.tools.ant.taskdefs.Javac) StringTokenizer(java.util.StringTokenizer) BuildException(org.apache.tools.ant.BuildException) File(java.io.File) PatternSet(org.apache.tools.ant.types.PatternSet)

Example 87 with Path

use of org.apache.tools.ant.types.Path in project flyway by flyway.

the class AbstractFlywayTask method setClasspathref.

/**
     * @param classpathref The reference to the classpath used to load the JDBC driver and the migrations.<br>Also
     *                     configurable with Ant Property: ${flyway.classpathref}
     */
public void setClasspathref(Reference classpathref) {
    Path classPath = new Path(getProject());
    classPath.setRefid(classpathref);
    this.classPath = classPath;
}
Also used : Path(org.apache.tools.ant.types.Path)

Example 88 with Path

use of org.apache.tools.ant.types.Path in project flyway by flyway.

the class AbstractFlywayTask method prepareClassPath.

/**
     * Prepares the classpath this task runs in, so that it includes both the classpath for Flyway and the classpath for
     * the JDBC drivers and migrations.
     */
private void prepareClassPath() {
    Path classpath = (Path) getProject().getReference("flyway.classpath");
    if (classpath != null) {
        setClasspath(classpath);
    } else {
        Reference classpathRef = (Reference) getProject().getReference("flyway.classpathref");
        if (classpathRef != null) {
            setClasspathref(classpathRef);
        }
    }
    ClassLoader classLoader = new AntClassLoader(getClass().getClassLoader(), getProject(), classPath);
    Thread.currentThread().setContextClassLoader(classLoader);
}
Also used : Path(org.apache.tools.ant.types.Path) Reference(org.apache.tools.ant.types.Reference) AntClassLoader(org.apache.tools.ant.AntClassLoader) AntClassLoader(org.apache.tools.ant.AntClassLoader)

Example 89 with Path

use of org.apache.tools.ant.types.Path in project intellij-community by JetBrains.

the class Javac2 method buildClasspathClassLoader.

/**
   * Create class loader based on classpath, bootclasspath, and sourcepath.
   *
   * @return a URL classloader
   */
private InstrumentationClassFinder buildClasspathClassLoader() {
    final StringBuffer classPathBuffer = new StringBuffer();
    final Project project = getProject();
    final Path cp = new Path(project);
    appendPath(cp, getBootclasspath());
    cp.setLocation(getDestdir().getAbsoluteFile());
    appendPath(cp, getClasspath());
    appendPath(cp, getSourcepath());
    appendPath(cp, getSrcdir());
    if (getIncludeantruntime()) {
        cp.addExisting(cp.concatSystemClasspath("last"));
    }
    boolean shouldInclude = getIncludejavaruntime();
    if (!shouldInclude) {
        if (project != null) {
            final String propValue = project.getProperty(PROPERTY_INSTRUMENTATION_INCLUDE_JAVA_RUNTIME);
            shouldInclude = !("false".equalsIgnoreCase(propValue) || "no".equalsIgnoreCase(propValue));
        } else {
            shouldInclude = true;
        }
    }
    if (shouldInclude) {
        cp.addJavaRuntime();
    }
    cp.addExtdirs(getExtdirs());
    final String[] pathElements = cp.list();
    for (int i = 0; i < pathElements.length; i++) {
        final String pathElement = pathElements[i];
        classPathBuffer.append(File.pathSeparator);
        classPathBuffer.append(pathElement);
    }
    final String classPath = classPathBuffer.toString();
    log("classpath=" + classPath, Project.MSG_VERBOSE);
    try {
        return createInstrumentationClassFinder(classPath);
    } catch (MalformedURLException e) {
        fireError(e.getMessage());
        return null;
    }
}
Also used : Path(org.apache.tools.ant.types.Path) Project(org.apache.tools.ant.Project) MalformedURLException(java.net.MalformedURLException)

Example 90 with Path

use of org.apache.tools.ant.types.Path in project intellij-community by JetBrains.

the class GenerateGroovyDocAction method generateGroovydoc.

private static void generateGroovydoc(final GroovyDocConfiguration configuration, final Project project) {
    Runnable groovyDocRun = () -> {
        Groovydoc groovydoc = new Groovydoc();
        groovydoc.setProject(new org.apache.tools.ant.Project());
        groovydoc.setDestdir(new File(configuration.OUTPUT_DIRECTORY));
        groovydoc.setPrivate(configuration.OPTION_IS_PRIVATE);
        groovydoc.setUse(configuration.OPTION_IS_USE);
        groovydoc.setWindowtitle(configuration.WINDOW_TITLE);
        final Path path = new Path(new org.apache.tools.ant.Project());
        path.setPath(configuration.INPUT_DIRECTORY);
        groovydoc.setSourcepath(path);
        String packages = "";
        for (int i = 0; i < configuration.PACKAGES.length; i++) {
            final String s = configuration.PACKAGES[i];
            if (s != null && s.isEmpty())
                continue;
            if (i > 0) {
                packages += ",";
            }
            packages += s;
        }
        groovydoc.setPackagenames(packages);
        final ProgressIndicator progressIndicator = ProgressManager.getInstance().getProgressIndicator();
        progressIndicator.setIndeterminate(true);
        progressIndicator.setText(GroovyDocBundle.message("groovy.doc.progress.indication.text"));
        groovydoc.execute();
    };
    ProgressManager.getInstance().runProcessWithProgressSynchronously(groovyDocRun, GroovyDocBundle.message("groovy.documentation.generating"), false, project);
    if (configuration.OPEN_IN_BROWSER) {
        File url = new File(configuration.OUTPUT_DIRECTORY, INDEX_HTML);
        if (url.exists()) {
            BrowserUtil.browse(url);
        }
    }
}
Also used : Path(org.apache.tools.ant.types.Path) Project(com.intellij.openapi.project.Project) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File) Groovydoc(org.codehaus.groovy.ant.Groovydoc)

Aggregations

Path (org.apache.tools.ant.types.Path)175 File (java.io.File)81 BuildException (org.apache.tools.ant.BuildException)57 Test (org.junit.Test)49 Project (org.apache.tools.ant.Project)28 IOException (java.io.IOException)27 Commandline (org.apache.tools.ant.types.Commandline)21 ArrayList (java.util.ArrayList)15 DirectoryScanner (org.apache.tools.ant.DirectoryScanner)12 AntClassLoader (org.apache.tools.ant.AntClassLoader)9 GroovyClassLoader (groovy.lang.GroovyClassLoader)8 URL (java.net.URL)8 StringTokenizer (java.util.StringTokenizer)8 Reference (org.apache.tools.ant.types.Reference)8 Java (org.apache.tools.ant.taskdefs.Java)7 FileSet (org.apache.tools.ant.types.FileSet)7 Resource (org.apache.tools.ant.types.Resource)7 FileWriter (java.io.FileWriter)6 List (java.util.List)6 Execute (org.apache.tools.ant.taskdefs.Execute)6