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;
}
}
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));
}
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);
}
}
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);
}
}
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);
}
}
Aggregations