Search in sources :

Example 66 with Path

use of org.apache.tools.ant.types.Path in project error-prone by google.

the class ErrorProneExternalCompilerAdapter method execute.

@Override
public boolean execute() throws BuildException {
    if (getJavac().isForkedJavac()) {
        attributes.log("Using external Error Prone compiler", Project.MSG_VERBOSE);
        Commandline cmd = new Commandline();
        cmd.setExecutable(JavaEnvUtils.getJdkExecutable("java"));
        if (memoryStackSize != null) {
            cmd.createArgument().setValue("-Xss" + memoryStackSize);
        }
        String memoryParameterPrefix = "-X";
        if (memoryInitialSize != null) {
            cmd.createArgument().setValue(memoryParameterPrefix + "ms" + this.memoryInitialSize);
            // Prevent setupModernJavacCommandlineSwitches() from doing it also
            memoryInitialSize = null;
        }
        if (memoryMaximumSize != null) {
            cmd.createArgument().setValue(memoryParameterPrefix + "mx" + this.memoryMaximumSize);
            // Prevent setupModernJavacCommandlineSwitches() from doing it also
            memoryMaximumSize = null;
        }
        for (Argument arg : jvmArgs) {
            for (String part : arg.getParts()) {
                cmd.createArgument().setValue(part);
            }
        }
        Path bootclasspath = new Path(getProject());
        addResourceSource(bootclasspath, "com/google/errorprone/ErrorProneExternalCompilerAdapter.class");
        cmd.createArgument().setValue("-Xbootclasspath/p:" + bootclasspath);
        if (classpath != null) {
            cmd.createArgument().setValue("-classpath");
            cmd.createArgument().setPath(classpath);
        }
        cmd.createArgument().setValue(ErrorProneCompiler.class.getName());
        // This is the first argument that may be spilled to a file.
        // The ant API describes it as the first argument which is a
        // file, but in fact only uses it for spilling.  Putting the
        // break here allows long classpath arguments to be handled.
        int firstSpillableArgument = cmd.size();
        setupModernJavacCommandlineSwitches(cmd);
        logAndAddFilesToCompile(cmd);
        return executeExternalCompile(cmd.getCommandline(), firstSpillableArgument, true) == 0;
    } else {
        attributes.log("You must set fork=\"yes\" to use the external Error Prone compiler", Project.MSG_ERR);
        return false;
    }
}
Also used : Path(org.apache.tools.ant.types.Path) Commandline(org.apache.tools.ant.types.Commandline) Argument(org.apache.tools.ant.types.Commandline.Argument)

Example 67 with Path

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

the class PMDTaskImpl method setupResourceLoader.

private ResourceLoader setupResourceLoader() {
    if (classpath == null) {
        classpath = new Path(project);
    }
    /*
         * 'basedir' is added to the path to make sure that relative paths such
         * as "<ruleset>resources/custom_ruleset.xml</ruleset>" still work when
         * ant is invoked from a different directory using "-f"
         */
    classpath.add(new Path(null, project.getBaseDir().toString()));
    project.log("Using the AntClassLoader: " + classpath, Project.MSG_VERBOSE);
    // must be true, otherwise you'll get ClassCastExceptions as classes
    // are loaded twice
    // and exist in multiple class loaders
    final boolean parentFirst = true;
    return new ResourceLoader(new AntClassLoader(Thread.currentThread().getContextClassLoader(), project, classpath, parentFirst));
}
Also used : Path(org.apache.tools.ant.types.Path) ResourceLoader(net.sourceforge.pmd.util.ResourceLoader) AntClassLoader(org.apache.tools.ant.AntClassLoader)

Example 68 with Path

use of org.apache.tools.ant.types.Path in project polymap4-core by Polymap4.

the class ConvertPath method convertFileSystemPathToResourcePath.

protected void convertFileSystemPathToResourcePath(IPath path) {
    IResource resource;
    if (Platform.getLocation().equals(path)) {
        resource = ResourcesPlugin.getWorkspace().getRoot();
    } else {
        resource = ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(path);
        if (resource == null)
            // $NON-NLS-1$
            throw new BuildException(Policy.bind("exception.noProjectMatchThePath", fileSystemPath.toOSString()));
    }
    if (property != null)
        getProject().setUserProperty(property, resource.getFullPath().toString());
    if (pathID != null) {
        Path newPath = new Path(getProject(), resource.getFullPath().toString());
        getProject().addReference(pathID, newPath);
    }
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.apache.tools.ant.types.Path) BuildException(org.apache.tools.ant.BuildException) IResource(org.eclipse.core.resources.IResource)

Example 69 with Path

use of org.apache.tools.ant.types.Path in project polymap4-core by Polymap4.

the class ConvertPath method convertResourcePathToFileSystemPath.

protected void convertResourcePathToFileSystemPath(IPath path) {
    IResource resource = null;
    switch(path.segmentCount()) {
        case 0:
            resource = ResourcesPlugin.getWorkspace().getRoot();
            break;
        case 1:
            resource = ResourcesPlugin.getWorkspace().getRoot().getProject(path.lastSegment());
            break;
        default:
            resource = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
    }
    if (resource.getLocation() == null)
        // can occur if the first segment is not a project
        throw // $NON-NLS-1$
        new BuildException(Policy.bind("exception.pathNotValid", path.toString()));
    if (property != null)
        getProject().setUserProperty(property, resource.getLocation().toOSString());
    if (pathID != null) {
        Path newPath = new Path(getProject(), resource.getLocation().toOSString());
        getProject().addReference(pathID, newPath);
    }
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.apache.tools.ant.types.Path) BuildException(org.apache.tools.ant.BuildException) IResource(org.eclipse.core.resources.IResource)

Example 70 with Path

use of org.apache.tools.ant.types.Path in project tomcat70 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(Constants.NEWLINE);
        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)

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