From e034aaaafed79cfcc3fbd4c50c06ffc34b250b9d Mon Sep 17 00:00:00 2001 From: ulrich <undisclosed> Date: Mon, 20 Mar 2017 16:08:09 +0000 Subject: [PATCH] log-Einstellungen geaendert --- src/java/de/uhilger/filecms/api/CompileService.java | 91 +++++++++++++++++++++++++++++++++++---------- 1 files changed, 71 insertions(+), 20 deletions(-) diff --git a/src/java/de/uhilger/filecms/api/CompileService.java b/src/java/de/uhilger/filecms/api/CompileService.java index b0ce388..2aaf5aa 100644 --- a/src/java/de/uhilger/filecms/api/CompileService.java +++ b/src/java/de/uhilger/filecms/api/CompileService.java @@ -55,16 +55,9 @@ StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null); Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(files); - File buildDir = new File(targetDir.getParentFile(), "build"); - final Iterable<String> options = Arrays.asList(new String[]{"-Xlint", - /*"-cp", project.getClassPath(),*/ - /* - ausgehend von src eins hoeher, dann nach build - */ - "-d", buildDir.getAbsolutePath() - }); - FileUtils.deleteDirectory(buildDir); - buildDir.mkdir(); + + final Iterable<String> options = buildOptions(targetDir); + compiler.getTask(null, null, diagnostics, options, null, compilationUnits).call(); fileManager.close(); collectResults(diagnostics, compilerIssues, relPath); @@ -124,6 +117,19 @@ } + public class JarFileFilter implements FileFilter { + + @Override + public boolean accept(File pathname) { + boolean doAccept = false; + if(pathname.getName().endsWith(".jar")) { + doAccept = true; + } + return doAccept; + } + + } + /** * * @param relPath @@ -149,24 +155,69 @@ DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null); Iterable<? extends JavaFileObject> compilationUnits1 = fileManager.getJavaFileObjectsFromFiles(files); - if( mode.equals("1")) { - final Iterable<String> options = Arrays.asList(new String[]{"-Xlint", - /*"-cp", project.getClassPath(),*/ - "-d", targetDir.getAbsolutePath() - }); - compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits1).call(); - } else { - compiler.getTask(null, null, diagnostics, null, null, compilationUnits1).call(); - } + final Iterable<String> options = buildOptions(targetDir); + compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits1).call(); fileManager.close(); List<CompilerIssue> compilerIssues = new ArrayList(); collectResults(diagnostics, compilerIssues, relPath); return compilerIssues; } - + + private final Iterable<String> buildOptions(File targetDir) { + String cbase = getCatalinaBase(); + File lib = new File(cbase, "lib"); + String cp = ""; + cp = buildCPFromDir(cp, lib); + logger.fine(lib.getAbsolutePath()); + logger.fine(cp); + /* + wegen dieser Funktion MUSS alles in 'src' liegen + */ + File srcDir = targetDir; + while(!srcDir.getName().endsWith("src")) { + srcDir = srcDir.getParentFile(); + } + File appDir = srcDir.getParentFile(); + File appLibDir = new File(appDir, "web/WEB-INF/lib"); + cp = buildCPFromDir(cp, appLibDir); + logger.fine(cp); + /* + ausgehend von src eins hoeher, dann nach build + */ + File buildDir = new File(appDir, "build"); + final Iterable<String> options = Arrays.asList(new String[]{"-Xlint", + "-cp", cp, + "-d", buildDir.getAbsolutePath() + }); + try { + FileUtils.deleteDirectory(buildDir); + buildDir.mkdir(); + } catch (IOException ex) { + logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex); + } + return options; + } + /* + -classpath $JLIB/jettison-1.3.3.jar:$JLIB/xstream-1.4.7.jar + */ + private String buildCPFromDir(String cp, File dir) { + StringBuffer buf = new StringBuffer(cp); + File[] files = dir.listFiles(new JarFileFilter()); + for(int i = 0; i < files.length; i++) { + if(buf.length() > 0) { + buf.append(File.pathSeparatorChar); + } + //buf.append("\""); + buf.append(files[i].getAbsolutePath()); + //buf.append("\""); + } + + return buf.toString(); + } } + /* Beispeil fuer einen dynamischen Compiler-Aufruf -- Gitblit v1.9.3