Repository: flex-falcon
Updated Branches:
  refs/heads/feature/maven-migration [created] d20c2694f


- Created a migration script that moves stuff around to be in a valid maven 
directory structure
- Created poms for each module, that are able to build the compiler, 
compiler.jx and falcon-compiler-oem modules
- Created a new module "compiler-build-tools" that contains a maven plugin to 
perform all of the code generation, resource-generation, source-processing 
steps needed
- Created a new module "compiler-jburg-types" that contains the single 
interface, that is needed to generate the jburg emitters in the compiler project


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/d20c2694
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/d20c2694
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/d20c2694

Branch: refs/heads/feature/maven-migration
Commit: d20c2694f904da818b916c298a0f6def9681a96f
Parents: e78b3e1
Author: Christofer Dutz <[email protected]>
Authored: Sun Feb 21 20:12:58 2016 +0100
Committer: Christofer Dutz <[email protected]>
Committed: Sun Feb 21 20:12:58 2016 +0100

----------------------------------------------------------------------
 compiler-build-tools/pom.xml                    |  84 +++++
 .../UnknownTreeHandlerGeneratorMojo.java        |  76 ++++
 .../compiler/tools/AnnotateClassesMojo.java     | 135 +++++++
 .../tools/BaseProblemGeneratorMojo.java         | 127 +++++++
 .../tools/ProblemEnumGeneratorMojo.java         | 152 ++++++++
 .../ProblemResourceBundleGeneratorMojo.java     | 101 +++++
 compiler-jburg-types/pom.xml                    |  26 ++
 .../target/compiler.types-0.6.0-SNAPSHOT.jar    | Bin 0 -> 8361 bytes
 compiler.jx/pom.xml                             |  53 +++
 compiler/pom.xml                                | 367 +++++++++++++++++++
 flex-compiler-oem/pom.xml                       |  30 ++
 migrate-to-maven.sh                             |  72 ++++
 pom.xml                                         |  62 ++++
 13 files changed, 1285 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler-build-tools/pom.xml
----------------------------------------------------------------------
diff --git a/compiler-build-tools/pom.xml b/compiler-build-tools/pom.xml
new file mode 100644
index 0000000..1f89ea8
--- /dev/null
+++ b/compiler-build-tools/pom.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.flex.flexjs.compiler</groupId>
+    <artifactId>compiler-parent</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>compiler-build-tools</artifactId>
+  <version>0.6.0-SNAPSHOT</version>
+  <packaging>maven-plugin</packaging>
+
+  <name>Apache Flex - FlexJS Compiler: Build Tools</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <version>3.0.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-compiler-api</artifactId>
+      <version>2.2</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <version>3.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>3.0.3</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-plugin-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <goalPrefix>compiler.build-tools</goalPrefix>
+          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+        </configuration>
+        <executions>
+          <execution>
+            <id>mojo-descriptor</id>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>help-goal</id>
+            <goals>
+              <goal>helpmojo</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler-build-tools/src/main/java/org/apache/flex/compiler/internal/as/codegen/UnknownTreeHandlerGeneratorMojo.java
----------------------------------------------------------------------
diff --git 
a/compiler-build-tools/src/main/java/org/apache/flex/compiler/internal/as/codegen/UnknownTreeHandlerGeneratorMojo.java
 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/internal/as/codegen/UnknownTreeHandlerGeneratorMojo.java
new file mode 100644
index 0000000..4bda610
--- /dev/null
+++ 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/internal/as/codegen/UnknownTreeHandlerGeneratorMojo.java
@@ -0,0 +1,76 @@
+package org.apache.flex.compiler.internal.as.codegen;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+
+import java.io.File;
+
+/**
+ * Goal which touches a timestamp file.
+ */
+@Mojo(name="generate-unknown-tree-handler",defaultPhase = 
LifecyclePhase.GENERATE_SOURCES)
+public class UnknownTreeHandlerGeneratorMojo
+    extends AbstractMojo
+{
+    
@Parameter(defaultValue="${project.basedir}/src/main/unknowntreehandler",property="inputDir",required=true)
+    private File inputDir;
+
+    @Parameter(property="inputFile",required=true)
+    private String inputFile;
+
+    
@Parameter(defaultValue="${project.build.directory}/generated-sources/unknowntreehandler",property="outputDir",required=true)
+    private File outputDirectory;
+
+    @Parameter(property="outputFile",required=true)
+    private String outputFile;
+
+    @Parameter(defaultValue="${project}")
+    private MavenProject project;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        File input = new File(inputDir, inputFile);
+        if(!input.exists()) {
+            throw new MojoExecutionException("Could not read file: " + 
input.getAbsolutePath());
+        }
+
+        // Make sure the output directory exists.
+        File output = new File(outputDirectory, outputFile);
+        if(!output.getParentFile().exists()) {
+            if(!output.getParentFile().mkdirs()) {
+                throw new MojoExecutionException("Could not create output 
directory: " +
+                        output.getParentFile().getAbsolutePath());
+            }
+        }
+
+        String[] args = {input.getAbsolutePath(), output.getAbsolutePath()};
+        try {
+            UnknownTreePatternInputOutput.main(args);
+        } catch(Exception e) {
+            throw new MojoExecutionException("Caught error while executing 
UnknownTreePatternInputOutput.main", e);
+        }
+
+        project.addCompileSourceRoot(outputDirectory.getPath());
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/AnnotateClassesMojo.java
----------------------------------------------------------------------
diff --git 
a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/AnnotateClassesMojo.java
 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/AnnotateClassesMojo.java
new file mode 100644
index 0000000..cae1ad7
--- /dev/null
+++ 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/AnnotateClassesMojo.java
@@ -0,0 +1,135 @@
+package org.apache.flex.compiler.tools;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.compiler.util.scan.InclusionScanException;
+import org.codehaus.plexus.compiler.util.scan.SimpleSourceInclusionScanner;
+import org.codehaus.plexus.compiler.util.scan.mapping.SuffixMapping;
+
+import java.io.*;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Goal which adds annotations to generated classes.
+ */
+@Mojo(name="add-class-annotation",defaultPhase = 
LifecyclePhase.PROCESS_SOURCES)
+public class AnnotateClassesMojo
+    extends AbstractMojo
+{
+    @Parameter
+    protected Set<String> includes = new HashSet<String>();
+
+    @Parameter
+    protected Set<String> excludes = new HashSet<String>();
+
+    @Parameter(defaultValue="${project.build.directory}/generated-sources")
+    private File directory;
+
+    @Parameter(property="annotation", required=true)
+    private String annotation;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        SuffixMapping mapping = new SuffixMapping("jbg", 
Collections.<String>emptySet());
+        SimpleSourceInclusionScanner scan = new 
SimpleSourceInclusionScanner(includes, excludes);
+        scan.addSourceMapping(mapping);
+
+        try {
+            Set<File> candidates = scan.getIncludedSources(directory, null);
+            for(File candidate : candidates) {
+                processFile(candidate);
+            }
+        } catch (InclusionScanException e) {
+            throw new MojoExecutionException("Error scanning filed to be 
processed.", e);
+        }
+    }
+
+    private void processFile(File file) {
+        if(!file.exists()) {
+            System.out.println("Missing file: " + file.getPath());
+            return;
+        }
+        System.out.println("Adding " + annotation + " to class: " + 
file.getPath());
+        try
+        {
+            // Prepare to read the file.
+            FileInputStream fileInputStream = new FileInputStream(file);
+            InputStreamReader inputStreamReader = new 
InputStreamReader(fileInputStream);
+            BufferedReader bufferedReader = new 
BufferedReader(inputStreamReader);
+
+            File tmpOutputFile = new File(file.getParentFile(), file.getName() 
+ ".tmp");
+            FileOutputStream fileOutputStream = new 
FileOutputStream(tmpOutputFile);
+            PrintStream outputStream = new PrintStream(fileOutputStream);
+            try
+            {
+                // Read it line-by-line.
+                String line;
+                while ((line = bufferedReader.readLine()) != null)
+                {
+                    // If the line starts with "public class", output the 
annotation on the previous line.
+                    if (line.startsWith("public class") || 
line.startsWith("public interface")) {
+                        outputStream.println(annotation);
+                    }
+                    outputStream.println(line);
+                }
+            }
+            finally
+            {
+                try {
+                    bufferedReader.close();
+                } catch(Exception e) {
+                    // Ignore.
+                }
+                try {
+                    outputStream.close();
+                } catch(Exception e) {
+                    // Ignore.
+                }
+                try {
+                    fileOutputStream.close();
+                } catch(Exception e) {
+                    // Ignore.
+                }
+            }
+
+            // Remove the original file.
+            if(!file.delete()) {
+                throw new MojoExecutionException("Error deleting original file 
at: " + file.getPath());
+            }
+
+            // Rename the temp file to the name of the original file.
+            if(!tmpOutputFile.renameTo(file)) {
+                throw new MojoExecutionException("Error renaming the temp file 
from: " + tmpOutputFile.getPath() +
+                        " to: " + file.getPath());
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/BaseProblemGeneratorMojo.java
----------------------------------------------------------------------
diff --git 
a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/BaseProblemGeneratorMojo.java
 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/BaseProblemGeneratorMojo.java
new file mode 100644
index 0000000..38697ba
--- /dev/null
+++ 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/BaseProblemGeneratorMojo.java
@@ -0,0 +1,127 @@
+package org.apache.flex.compiler.tools;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.io.Files;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.nio.charset.Charset;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * Created by christoferdutz on 20.02.16.
+ */
+public abstract class BaseProblemGeneratorMojo extends AbstractMojo
+{
+
+    private ImmutableSet<String> nonProblemClassesToFilter =
+            new ImmutableSet.Builder<String>()
+                    .add("DefaultSeverity.java")
+                    .add("CompositeProblemFilter.java")
+                    .add("FilteredIterator.java")
+                    .add("CompilerProblemSeverity.java")
+                    .build();
+
+    abstract protected File getInputDirectory();
+    abstract protected File getOutputDirectory();
+    abstract protected String getOutputFile();
+
+    public void execute() throws MojoExecutionException
+    {
+        File generatedFile = new File(getOutputDirectory(), getOutputFile());
+
+        if(!generatedFile.getParentFile().exists()) {
+            if(!generatedFile.getParentFile().mkdirs()) {
+                throw new MojoExecutionException("Could not create output 
directory: " + generatedFile.getParentFile());
+            }
+        }
+
+        try {
+            PrintWriter writer = new PrintWriter(new 
FileWriter(generatedFile));
+            try {
+                printHeader(writer);
+
+                Collection<File> problemClassSourceFiles = 
getProblemClassSourceFiles(getInputDirectory());
+                Iterator<File> problemClassSourceFileIterator = 
problemClassSourceFiles.iterator();
+                while (problemClassSourceFileIterator.hasNext()) {
+                    File problemClassSourceFile = 
problemClassSourceFileIterator.next();
+                    printEntry(writer, problemClassSourceFile, 
!problemClassSourceFileIterator.hasNext());
+                }
+
+                printFooter(writer);
+            } finally {
+                writer.close();
+            }
+        } catch (IOException e) {
+            throw new MojoExecutionException("Caught Exception while trying to 
create output file: " + generatedFile);
+        }
+    }
+
+
+    protected void printHeader(PrintWriter writer) {
+        // Optional.
+    }
+
+    abstract protected void printEntry(PrintWriter writer, File source, 
boolean last);
+
+    protected void printFooter(PrintWriter writer) {
+        // Optional.
+    }
+
+    /**
+     * Recursively search a directory and its sub-directories for .class files.
+     * Use the file name to determine what equivalent class name should be
+     * available to the current classloader.
+     *
+     * @param dir - the directory to search
+     * @return list of source files found
+     */
+    protected Collection<File> getProblemClassSourceFiles(File dir)
+    {
+        Collection<File> problemFiles = FileUtils.listFiles(dir, new String[] 
{ "java" }, true);
+        return Collections2.filter(problemFiles,
+                new Predicate<File>() {
+                    @Override
+                    public boolean apply(File input)
+                    {
+                        return isProblemClass(input);
+                    }
+                });
+    }
+
+    private boolean isProblemClass(File javaFile)
+    {
+        if (nonProblemClassesToFilter.contains(javaFile.getName()))
+            return false;
+        final String javaClassName = 
FilenameUtils.getBaseName(javaFile.getAbsolutePath());
+        try
+        {
+            Collection<String> lines =  Files.readLines(javaFile, 
Charset.forName("UTF8"));
+            for (String line : lines)
+            {
+                if (line.matches("^\\s*public\\s+final\\s+class\\s+" + 
javaClassName + "\\s+extends\\s+.*"))
+                    return true;
+                if (line.matches("^\\s*final\\s+public\\s+class\\s+" + 
javaClassName + "\\s+extends\\s+.*"))
+                    return true;
+                if (line.matches("^\\s*public\\s+class\\s+" + javaClassName + 
"\\s+extends\\s+.*"))
+                    return true;
+            }
+            return false;
+        }
+        catch (IOException e)
+        {
+            return false;
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemEnumGeneratorMojo.java
----------------------------------------------------------------------
diff --git 
a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemEnumGeneratorMojo.java
 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemEnumGeneratorMojo.java
new file mode 100644
index 0000000..54b621b
--- /dev/null
+++ 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemEnumGeneratorMojo.java
@@ -0,0 +1,152 @@
+package org.apache.flex.compiler.tools;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+
+import java.io.File;
+import java.io.PrintWriter;
+
+/**
+ * Goal which touches a timestamp file.
+ */
+@Mojo(name="generate-problems-enum",defaultPhase = 
LifecyclePhase.GENERATE_SOURCES)
+public class ProblemEnumGeneratorMojo
+    extends BaseProblemGeneratorMojo
+{
+    
@Parameter(defaultValue="${project.basedir}/src/main/java/org/apache/flex/compiler/problems",
+            property="inputDir", required=true)
+    private File inputDirectory;
+
+    
@Parameter(defaultValue="${project.build.directory}/generated-sources/build-tools",
+            property="outputDir", required=true)
+    private File outputDirectory;
+
+    @Parameter(defaultValue="org/apache/flex/compiler/problems/ProblemID.java",
+            property="outputFile", required=true)
+    private String outputFile;
+
+    @Parameter(defaultValue="${project}")
+    private MavenProject project;
+
+    @Override
+    protected File getInputDirectory() {
+        return inputDirectory;
+    }
+
+    @Override
+    protected File getOutputDirectory() {
+        return outputDirectory;
+    }
+
+    @Override
+    protected String getOutputFile() {
+        return outputFile;
+    }
+
+    @Override
+    public void execute() throws MojoExecutionException {
+        super.execute();
+
+        // Add the output directory to the source path.
+        project.addCompileSourceRoot(outputDirectory.getPath());
+    }
+
+    @Override
+    protected void printHeader(PrintWriter writer) {
+        writer.println("/*");
+        writer.println(" *  Licensed to the Apache Software Foundation (ASF) 
under one or more");
+        writer.println(" *  contributor license agreements.  See the NOTICE 
file distributed with");
+        writer.println(" *  this work for additional information regarding 
copyright ownership.");
+        writer.println(" *  The ASF licenses this file to You under the Apache 
License, Version 2.0");
+        writer.println(" *  (the \"License\"); you may not use this file 
except in compliance with");
+        writer.println(" *  the License.  You may obtain a copy of the License 
at");
+        writer.println();
+        writer.println(" *      http://www.apache.org/licenses/LICENSE-2.0";);
+        writer.println();
+        writer.println(" *  Unless required by applicable law or agreed to in 
writing, software");
+        writer.println(" *  distributed under the License is distributed on an 
\"AS IS\" BASIS,");
+        writer.println(" *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
either express or implied.");
+        writer.println(" *  See the License for the specific language 
governing permissions and");
+        writer.println(" *  limitations under the License.");
+        writer.println(" */");
+        writer.println();
+        writer.println("package org.apache.flex.compiler.problems;");
+        writer.println();
+        writer.println("import java.util.EnumSet;");
+        writer.println("import com.google.common.collect.ImmutableMap;");
+        writer.println();
+        writer.println("public enum ProblemID");
+        writer.println("{");
+    }
+
+    @Override
+    protected void printEntry(PrintWriter writer, File source, boolean last) {
+        writer.println("    " + getProblemEnumEntry(source.getName()) + (last 
? ";" : ","));
+    }
+
+    @Override
+    protected void printFooter(PrintWriter writer) {
+        writer.println();
+        writer.println("    private ProblemID(Class<? extends CompilerProblem> 
problemClass)");
+        writer.println("    {");
+        writer.println("        this.problemClass = problemClass;");
+        writer.println("    }");
+        writer.println();
+        writer.println("    private final Class<? extends CompilerProblem> 
problemClass;");
+        writer.println("    public final Class<? extends CompilerProblem> 
getProblemClass()");
+        writer.println("    {");
+        writer.println("        return problemClass;");
+        writer.println("    }");
+        writer.println();
+        writer.println("    public static final ProblemID 
getID(ICompilerProblem problem)");
+        writer.println("    {");
+        writer.println("        final CompilerProblem problemImpl = 
(CompilerProblem)problem;");
+        writer.println("        return 
classToIDMap.get(problemImpl.getClass());");
+        writer.println("    }");
+        writer.println();
+        writer.println("    public static final ProblemID getID(Class<?> 
problemClass)");
+        writer.println("    {");
+        writer.println("        return classToIDMap.get(problemClass);");
+        writer.println("    }");
+        writer.println();
+        writer.println("    private static final ImmutableMap<Class<? extends 
CompilerProblem>, ProblemID> classToIDMap = createClassToIDMap();");
+        writer.println("    private static ImmutableMap<Class<? extends 
CompilerProblem>, ProblemID> createClassToIDMap()");
+        writer.println("    {");
+        writer.println("        final ImmutableMap.Builder<Class<? extends 
CompilerProblem>, ProblemID> builder = new ImmutableMap.Builder<Class<? extends 
CompilerProblem>, ProblemID>();");
+        writer.println("        for (ProblemID id : 
EnumSet.allOf(ProblemID.class))");
+        writer.println("            builder.put(id.getProblemClass(), id);");
+        writer.println("        return builder.build();");
+        writer.println("    }");
+        writer.println("}");
+    }
+
+    private static String getProblemEnumEntry(String problemClassName) {
+        String problemTypeName = problemClassName.substring(0, 
problemClassName.length() - "class".length());
+        String enumConstantName = 
getEnumName(problemTypeName.replaceAll("Problem$", ""));
+        return enumConstantName + "(" + problemTypeName + ".class" + ")";
+    }
+
+    private static String getEnumName(String problemTypeName) {
+        return "PROBLEM_" + problemTypeName;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemResourceBundleGeneratorMojo.java
----------------------------------------------------------------------
diff --git 
a/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemResourceBundleGeneratorMojo.java
 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemResourceBundleGeneratorMojo.java
new file mode 100644
index 0000000..0424d41
--- /dev/null
+++ 
b/compiler-build-tools/src/main/java/org/apache/flex/compiler/tools/ProblemResourceBundleGeneratorMojo.java
@@ -0,0 +1,101 @@
+package org.apache.flex.compiler.tools;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+
+import java.io.*;
+
+/**
+ * Goal which touches a timestamp file.
+ */
+@Mojo(name="generate-problems-resource-bundle",defaultPhase = 
LifecyclePhase.GENERATE_RESOURCES)
+public class ProblemResourceBundleGeneratorMojo
+    extends BaseProblemGeneratorMojo
+{
+    
@Parameter(defaultValue="${project.basedir}/src/main/java/org/apache/flex/compiler/problems",
+            property="inputDir", required=true)
+    private File inputDirectory;
+
+    
@Parameter(defaultValue="${project.build.directory}/classes/org/apache/flex/compiler",
+            property="outputDir", required=true)
+    private File outputDirectory;
+
+    @Parameter(defaultValue="messages_en.properties",
+            property="outputFile", required=true)
+    private String outputFile;
+
+    @Parameter(defaultValue="${project}")
+    private MavenProject project;
+
+    @Override
+    protected File getInputDirectory() {
+        return inputDirectory;
+    }
+
+    @Override
+    protected File getOutputDirectory() {
+        return outputDirectory;
+    }
+
+    @Override
+    protected String getOutputFile() {
+        return outputFile;
+    }
+
+    @Override
+    protected void printEntry(PrintWriter writer, File source, boolean last) {
+        writer.println(getProblemName(source) + "=" + 
getProblemDescription(source));
+    }
+
+    private String getProblemName(File sourceFile) {
+        String fileName = sourceFile.getName();
+        return fileName.substring(0, fileName.length() - "class".length());
+    }
+
+    private String getProblemDescription(File sourceFile) {
+        try {
+            BufferedReader sourceFileReader = new BufferedReader(new 
FileReader(sourceFile));
+            String line;
+            StringBuilder sb = null;
+            while((line = sourceFileReader.readLine()) != null) {
+                if(line.contains("DESCRIPTION")) {
+                    sb = new StringBuilder();
+                }
+                if(sb != null) {
+                    sb.append(line);
+                    if(line.trim().endsWith(";")) {
+                        break;
+                    }
+                }
+            }
+            if(sb != null) {
+                line = sb.toString();
+                return line.substring(line.indexOf("\"") + 1, 
line.lastIndexOf("\""));
+            }
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler-jburg-types/pom.xml
----------------------------------------------------------------------
diff --git a/compiler-jburg-types/pom.xml b/compiler-jburg-types/pom.xml
new file mode 100644
index 0000000..9edb810
--- /dev/null
+++ b/compiler-jburg-types/pom.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>compiler-parent</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>compiler-jburg-types</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+
+    <name>Apache Flex - FlexJS Compiler: JBurg Types</name>
+    <description>Types needed by JBurg to perform it's code 
generation.</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>net.sourceforge.jburg</groupId>
+            <artifactId>jburg</artifactId>
+            <version>1.10.2</version>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler-jburg-types/target/compiler.types-0.6.0-SNAPSHOT.jar
----------------------------------------------------------------------
diff --git a/compiler-jburg-types/target/compiler.types-0.6.0-SNAPSHOT.jar 
b/compiler-jburg-types/target/compiler.types-0.6.0-SNAPSHOT.jar
new file mode 100644
index 0000000..35eebcc
Binary files /dev/null and 
b/compiler-jburg-types/target/compiler.types-0.6.0-SNAPSHOT.jar differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler.jx/pom.xml
----------------------------------------------------------------------
diff --git a/compiler.jx/pom.xml b/compiler.jx/pom.xml
new file mode 100644
index 0000000..60da13e
--- /dev/null
+++ b/compiler.jx/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>compiler-parent</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>compiler-jx</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+
+    <name>Apache Flex - FlexJS Compiler: FalconJx Cross Compiler</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.flex.flexjs.compiler</groupId>
+            <artifactId>compiler</artifactId>
+            <version>0.6.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>args4j</groupId>
+            <artifactId>args4j</artifactId>
+            <version>2.0.28</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codeartisans</groupId>
+            <artifactId>org.json</artifactId>
+            <version>20131017</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.javascript</groupId>
+            <artifactId>closure-compiler</artifactId>
+            <version>v20150609</version>
+        </dependency>
+        <dependency>
+            <groupId>org.clojure</groupId>
+            <artifactId>google-closure-library</artifactId>
+            <version>0.0-20150902-b129bb9e</version>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.10</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/compiler/pom.xml
----------------------------------------------------------------------
diff --git a/compiler/pom.xml b/compiler/pom.xml
new file mode 100644
index 0000000..211d34c
--- /dev/null
+++ b/compiler/pom.xml
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>compiler-parent</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>compiler</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+
+    <name>Apache Flex - FlexJS Compiler</name>
+    <description>The Apache Flex Falcon Compiler</description>
+
+    <build>
+        <plugins>
+            <!--
+                    Do all the JFlex code generation
+            -->
+            <plugin>
+                <groupId>de.jflex</groupId>
+                <artifactId>maven-jflex-plugin</artifactId>
+                <version>1.4.3</version>
+                <executions>
+                    <execution>
+                        <id>generate-raw-as-tokenizer</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            
<outputDirectory>target/generated-sources/jflex</outputDirectory>
+                            <lexDefinitions>
+                                
<lexDefinition>src/main/jflex/org/apache/flex/compiler/internal/parsing/as/RawASTokenizer.lex</lexDefinition>
+                            </lexDefinitions>
+                            
<skeleton>src/main/jflex/org/apache/flex/compiler/internal/parsing/as/skeleton.falcon</skeleton>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>generate-raw-as-doc-tokenizer</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            
<outputDirectory>target/generated-sources/jflex</outputDirectory>
+                            <lexDefinitions>
+                                
<lexDefinition>src/main/jflex/org/apache/flex/compiler/internal/parsing/as/RawASDocTokenizer.lex</lexDefinition>
+                            </lexDefinitions>
+                            
<skeleton>src/main/jflex/org/apache/flex/compiler/internal/parsing/as/skeleton.default</skeleton>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>generate-raw-mxml-tokenizer</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            
<outputDirectory>target/generated-sources/jflex</outputDirectory>
+                            <lexDefinitions>
+                                
<lexDefinition>src/main/jflex/org/apache/flex/compiler/internal/parsing/mxml/RawMXMLTokenizer.lex</lexDefinition>
+                            </lexDefinitions>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!--
+                  Do all the Antlr2 code generation
+            -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antlr-plugin</artifactId>
+                <version>2.0-beta-1</version>
+                <executions>
+                    <execution>
+                        <id>generate-as-parser</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            
<grammars>org/apache/flex/compiler/internal/parsing/as/ASParser.g</grammars>
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>antlr</groupId>
+                        <artifactId>antlr</artifactId>
+                        <version>2.7.7</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+
+            <!--
+                The generation of the metadata-parser requires Antlr to
+                load ImportMetadataTokenTypes.txt. Unfortunately Altlr
+                looks in the current working directory. The only way to
+                force it to work, is to start a new process with the
+                working directory in the directory containing the file.
+            -->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>1.4.0</version>
+                <executions>
+                    <execution>
+                        <id>generate-metadata-parser</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>java</executable>
+                            <arguments>
+                                <argument>-classpath</argument>
+                                <classpath/>
+                                <arguments>antlr.Tool</arguments>
+                                <argument>-o</argument>
+                                
<argument>../../../../../../../../../../target/generated-sources/antlr/org/apache/flex/compiler/internal/parsing/as</argument>
+                                <argument>MetadataParser.g</argument>
+                            </arguments>
+                            
<workingDirectory>src/main/antlr/org/apache/flex/compiler/internal/parsing/as</workingDirectory>
+                            
<sourceRoot>target/generated-sources/antlr</sourceRoot>
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>antlr</groupId>
+                        <artifactId>antlr</artifactId>
+                        <version>2.7.7</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+
+            <!--
+                  Do all the JBurg code generation.
+            -->
+            <plugin>
+                <groupId>net.sourceforge.jburg</groupId>
+                <artifactId>jburg-maven-plugin</artifactId>
+                <version>2.0.10-SNAPSHOT</version>
+                <extensions>true</extensions>
+                <executions>
+                    <execution>
+                        <id>generate-css-emitter</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                <include>CSSEmitter.jbg</include>
+                            </includes>
+                            
<sourceDirectory>src/main/jburg/org/apache/flex/compiler/internal/css/codegen</sourceDirectory>
+                            
<outputDirectory>target/generated-sources/jburg/org/apache/flex/compiler/internal/css/codegen</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>generate-cmc-emitter</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                <include>CmcEmitter.jbg</include>
+                            </includes>
+                            
<sourceDirectory>src/main/jburg/org/apache/flex/compiler/internal/as/codegen</sourceDirectory>
+                            
<outputDirectory>target/generated-sources/jburg/org/apache/flex/compiler/internal/as/codegen</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+                <configuration>
+                    <!-- debug=true generates the "dump" method for Emitters, 
which is used for debugging -->
+                    <debug>true</debug>
+                </configuration>
+                <dependencies>
+                    <dependency>
+                        <groupId>net.sourceforge.jburg</groupId>
+                        <artifactId>jburg</artifactId>
+                        <version>1.10.2</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.apache.flex.flexjs.compiler</groupId>
+                        <artifactId>compiler-jburg-types</artifactId>
+                        <version>0.6.0-SNAPSHOT</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+
+            <!--
+                  Do all the Antlr3 code generation.
+            -->
+            <plugin>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr3-maven-plugin</artifactId>
+                <version>3.5.2</version>
+                <executions>
+                    <execution>
+                        <id>generate-csslexer-and-cssparser</id>
+                        <goals>
+                            <goal>antlr</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                <include>CSS.g</include>
+                            </includes>
+                            
<sourceDirectory>src/main/antlr3/org/apache/flex/compiler/internal/css</sourceDirectory>
+                            
<outputDirectory>target/generated-sources/antlr3/org/apache/flex/compiler/internal/css</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>generate-csstree</id>
+                        <goals>
+                            <goal>antlr</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                <include>CSSTree.g</include>
+                            </includes>
+                            
<sourceDirectory>src/main/antlr3/org/apache/flex/compiler/internal/css</sourceDirectory>
+                            
<outputDirectory>target/generated-sources/antlr3/org/apache/flex/compiler/internal/css</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <!--
+                    Do all the custom processing with the falcon build tools.
+            -->
+            <plugin>
+                <groupId>org.apache.flex.flexjs.compiler</groupId>
+                <artifactId>compiler-build-tools</artifactId>
+                <version>0.6.0-SNAPSHOT</version>
+                <executions>
+                    <execution>
+                        <id>generate-unknown-tree-handler</id>
+                        <goals>
+                            <goal>generate-unknown-tree-handler</goal>
+                        </goals>
+                        <configuration>
+                            
<inputFile>org/apache/flex/compiler/internal/as/codegen/UnknownTreeHandlerPatterns.xml</inputFile>
+                            
<outputFile>org/apache/flex/compiler/internal/as/codegen/UnknownTreeHandlerPatterns.java</outputFile>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>add-suppress-unused-warnings-annotations</id>
+                        <goals>
+                            <goal>add-class-annotation</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                
<include>antlr/org/apache/flex/compiler/internal/parsing/as/ASParser.java</include>
+                                
<include>antlr/org/apache/flex/compiler/internal/parsing/as/ASTokenTypes.java</include>
+                                
<include>antlr/org/apache/flex/compiler/internal/parsing/as/MetadataTokenTypes.java</include>
+                            </includes>
+                            
<annotation>@SuppressWarnings("unused")</annotation>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>add-suppress-all-warnings-annotations-jburg</id>
+                        <goals>
+                            <goal>add-class-annotation</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                
<include>antlr/org/apache/flex/compiler/internal/parsing/as/MetadataParser.java</include>
+                            </includes>
+                            <annotation>@SuppressWarnings("all")</annotation>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        
<id>add-suppress-rawtypes-unchecked-unused-warnings-annotations</id>
+                        <goals>
+                            <goal>add-class-annotation</goal>
+                        </goals>
+                        <configuration>
+                            <includes>
+                                
<include>jburg/org/apache/flex/compiler/internal/css/codegen/CSSEmitter.java</include>
+                                
<include>jburg/org/apache/flex/compiler/internal/as/codegen/CmcEmitter.java</include>
+                            </includes>
+                            <annotation>@SuppressWarnings({"rawtypes", 
"unchecked", "unused"})</annotation>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>generate-problems-enum</id>
+                        <goals>
+                            <goal>generate-problems-enum</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>generate-problems-resource-bundle</id>
+                        <goals>
+                            <goal>generate-problems-resource-bundle</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <!-- Make the surefire execute all unit-tests -->
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <includes>
+                        <include>**/*Tests.java</include>
+                    </includes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.flex.flexjs.compiler</groupId>
+            <artifactId>compiler-jburg-types</artifactId>
+            <version>0.6.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.flex</groupId>
+            <artifactId>flex-tool-api</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.4</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+            <version>1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.antlr</groupId>
+            <artifactId>antlr</artifactId>
+            <version>3.3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>17.0</version>
+        </dependency>
+        <dependency>
+            <groupId>net.sourceforge.jburg</groupId>
+            <artifactId>jburg</artifactId>
+            <version>1.10.2</version>
+        </dependency>
+        <dependency>
+            <groupId>de.jflex</groupId>
+            <artifactId>jflex</artifactId>
+            <version>1.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.b1.pack</groupId>
+            <artifactId>lzma-sdk-4j</artifactId>
+            <version>9.22.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.10</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/flex-compiler-oem/pom.xml
----------------------------------------------------------------------
diff --git a/flex-compiler-oem/pom.xml b/flex-compiler-oem/pom.xml
new file mode 100644
index 0000000..5bd620c
--- /dev/null
+++ b/flex-compiler-oem/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>compiler-parent</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>flex-compiler-oem</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+
+    <name>Apache Flex - FlexJS Compiler: OEM Layer</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.flex.compiler</groupId>
+            <artifactId>falcon-compiler</artifactId>
+            <version>0.6.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.flex.compiler</groupId>
+            <artifactId>swfutils</artifactId>
+            <version>4.15.0</version>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/migrate-to-maven.sh
----------------------------------------------------------------------
diff --git a/migrate-to-maven.sh b/migrate-to-maven.sh
new file mode 100755
index 0000000..3f0c317
--- /dev/null
+++ b/migrate-to-maven.sh
@@ -0,0 +1,72 @@
+#!/usr/bin/env bash
+
+#############################################
+## Convert the flex-compiler-oem module
+#############################################
+mkdir -p flex-compiler-oem/src/main/java
+git mv flex-compiler-oem/src/flex2 flex-compiler-oem/src/main/java
+git mv flex-compiler-oem/src/macromedia flex-compiler-oem/src/main/java
+git add compiler/src/main
+
+#############################################
+## Convert the compiler module
+#############################################
+# Extract the UnknownTreePatternInputOutput generator.
+git mv 
compiler/src/org/apache/flex/compiler/internal/as/codegen/UnknownTreePatternInputOutput.java
 compiler-build-tools/src/main/java/org/apache/flex/compiler/internal/as/codegen
+# Extract the IASNodeAdapter as this is needed for generating code in the 
compiler.
+mkdir -p 
compiler-jburg-types/src/main/java/org/apache/flex/compiler/internal/as/codegen
+git mv 
compiler/src/org/apache/flex/compiler/internal/as/codegen/IASNodeAdapter.java 
compiler-jburg-types/src/main/java/org/apache/flex/compiler/internal/as/codegen
+# Convert the compiler project itself
+mkdir -p compiler/src/main/java
+mkdir -p compiler/src/main/resources
+mkdir -p compiler/src/main/jflex/org/apache/flex/compiler/internal/parsing/as
+git mv compiler/src/org/apache/flex/compiler/internal/parsing/as/*.lex 
compiler/src/main/jflex/org/apache/flex/compiler/internal/parsing/as
+git mv compiler/src/org/apache/flex/compiler/internal/parsing/as/skeleton.* 
compiler/src/main/jflex/org/apache/flex/compiler/internal/parsing/as
+mkdir -p compiler/src/main/jflex/org/apache/flex/compiler/internal/parsing/mxml
+git mv compiler/src/org/apache/flex/compiler/internal/parsing/mxml/*.lex 
compiler/src/main/jflex/org/apache/flex/compiler/internal/parsing/mxml
+mkdir -p compiler/src/main/antlr/org/apache/flex/compiler/internal/parsing/as
+git mv compiler/src/org/apache/flex/compiler/internal/parsing/as/ASParser.g 
compiler/src/main/antlr/org/apache/flex/compiler/internal/parsing/as
+git mv 
compiler/src/org/apache/flex/compiler/internal/parsing/as/MetadataParser.g 
compiler/src/main/antlr/org/apache/flex/compiler/internal/parsing/as
+git mv 
compiler/src/org/apache/flex/compiler/internal/parsing/as/ImportMetadataTokenTypes.txt
 compiler/src/main/antlr/org/apache/flex/compiler/internal/parsing/as
+mkdir -p compiler/src/main/jburg/org/apache/flex/compiler/internal/css/codegen
+git mv compiler/src/org/apache/flex/compiler/internal/css/codegen/*.jbg 
compiler/src/main/jburg/org/apache/flex/compiler/internal/css/codegen
+mkdir -p compiler/src/main/antlr3/org/apache/flex/compiler/internal/css
+git mv compiler/src/org/apache/flex/compiler/internal/css/*.g 
compiler/src/main/antlr3/org/apache/flex/compiler/internal/css
+mkdir -p compiler/src/main/jburg/org/apache/flex/compiler/internal/as/codegen
+git mv compiler/src/org/apache/flex/compiler/internal/as/codegen/*.jbg 
compiler/src/main/jburg/org/apache/flex/compiler/internal/as/codegen
+git mv 
compiler/src/main/jburg/org/apache/flex/compiler/internal/as/codegen/cmc.jbg 
compiler/src/main/jburg/org/apache/flex/compiler/internal/as/codegen/CmcEmitter.jbg
+git mv 
compiler/src/main/jburg/org/apache/flex/compiler/internal/css/codegen/css.jbg 
compiler/src/main/jburg/org/apache/flex/compiler/internal/css/codegen/CSSEmitter.jbg
+mkdir -p 
compiler/src/main/unknowntreehandler/org/apache/flex/compiler/internal/as/codegen
+git mv 
compiler/src/org/apache/flex/compiler/internal/as/codegen/UnknownTreeHandlerPatterns.xml
 
compiler/src/main/unknowntreehandler/org/apache/flex/compiler/internal/as/codegen
+git mv compiler/src/org compiler/src/main/java
+git mv compiler/src/META-INF compiler/src/main/resources
+git mv compiler/src/overview.html compiler/src/main/resources
+git add compiler/src/main
+# Separate the resource bundles.
+mkdir -p compiler/src/main/resources/org/apache/flex/compiler
+git mv compiler/src/main/java/org/apache/flex/compiler/messages_*.properties 
compiler/src/main/resources/org/apache/flex/compiler
+# Clean up some invalidly named files
+git mv 
compiler/src/main/java/org/apache/flex/compiler/internal/css/package.hmtl 
compiler/src/main/java/org/apache/flex/compiler/internal/css/package.html
+git mv compiler/src/main/java/org/apache/flex/compiler/tree/mxml/index.html 
compiler/src/main/java/org/apache/flex/compiler/tree/mxml/package.html
+# Move the tests from the separate project into the compiler project
+mkdir -p compiler/src/test/java
+mkdir -p compiler/temp
+mkdir -p compiler/results
+git mv compiler.tests/unit-tests/org compiler/src/test/java
+git mv compiler.tests/src/org/apache/flex/utils 
compiler/src/test/java/org/apache/flex
+
+#############################################
+## Convert the compiler.jx module
+#############################################
+mkdir -p compiler.jx/src/main/java
+mkdir -p compiler.jx/src/main/resources
+git mv compiler.jx/src/META-INF compiler.jx/src/main/resources
+git mv compiler.jx/src/com compiler.jx/src/main/java
+git mv compiler.jx/src/org compiler.jx/src/main/java
+# 
compiler.jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/Notes_JSFlexJSEmitter.txt
+# Move the tests from the separate project into the compiler.jx project
+mkdir -p compiler.jx/src/test/java
+git mv compiler.jx.tests/src/org compiler.jx/src/test/java
+mkdir -p compiler.jx/src/test/resources
+git mv compiler.jx.tests/test-files/* compiler.jx/src/test/resources
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d20c2694/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..0a2a491
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>14</version>
+    </parent>
+
+    <groupId>org.apache.flex.flexjs.compiler</groupId>
+    <artifactId>compiler-parent</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>Apache Flex - FlexJS Compiler: Parent</name>
+    <description>The Apache Flex FlexJS Compiler Parent</description>
+
+    <mailingLists>
+        <mailingList>
+            <name>Apache Flex User List</name>
+            <subscribe>[email protected]</subscribe>
+            <unsubscribe>[email protected]</unsubscribe>
+            <post>[email protected]</post>
+            
<archive>http://mail-archives.apache.org/mod_mbox/flex-users/</archive>
+        </mailingList>
+    </mailingLists>
+
+    <scm>
+        
<connection>scm:svn:https://git-wip-us.apache.org/repos/asf/flex-falcon.git</connection>
+        
<developerConnection>scm:svn:https://git-wip-us.apache.org/repos/asf/flex-falcon.git</developerConnection>
+        <url>https://git-wip-us.apache.org/repos/asf/flex-falcon.git</url>
+    </scm>
+
+    <properties>
+        <java.version>1.6</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <modules>
+        <module>compiler</module>
+        <module>compiler.jx</module>
+        <module>compiler-build-tools</module>
+        <module>compiler-jburg-types</module>
+        <module>flex-compiler-oem</module>
+    </modules>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.5.1</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file

Reply via email to