Command line compiler for XTend

It is not documented, but there is indeed a command line compiler in the Xtend code base - the same one used by the Maven plug-in (that is documented in the Xtend homepage).

If Maven plug-in does not work for you, then you could download the standalone jar version directly from the Maven repository at http://build.eclipse.org/common/xtend/maven/org/eclipse/xtend/org.eclipse.xtend.standalone/2.3.1/ (for version 2.3.1), and execute the org.eclipse.xtend.core.compiler.batch.Main class from it.

This class executes the xtend compiler, and usage information can be displayed (also readable from the source file).


You can use the xtend standalone compiler. For my case I copied the following .jar files to a folder named xtendc:

com.google.guava_21.0.0.v20170206-1425.jar
com.google.inject_3.0.0.v201312141243.jar
javax.inject_1.0.0.v20091030.jar
org.antlr.runtime_3.2.0.v201101311130.jar
org.apache.log4j_1.2.15.v201012070815.jar
org.eclipse.emf.common_2.15.0.v20180914-1817.jar
org.eclipse.emf.ecore.xmi_2.15.0.v20180706-1146.jar
org.eclipse.emf.ecore_2.16.0.v20181124-0637.jar
org.eclipse.equinox.common_3.10.200.v20181021-1645.jar
org.eclipse.jdt.core_3.16.0.v20181130-1748.jar
org.eclipse.xtend.core_2.16.0.v20181203-1347.jar
org.eclipse.xtend.lib.macro_2.16.0.v20181203-0507.jar
org.eclipse.xtext.common.types_2.16.0.v20181203-0528.jar
org.eclipse.xtext.util_2.16.0.v20181203-0514.jar
org.eclipse.xtext.xbase.lib_2.16.0.v20181203-0507.jar
org.eclipse.xtext.xbase_2.16.0.v20181203-0528.jar
org.eclipse.xtext_2.16.0.v20181203-0514.jar
org.objectweb.asm_7.0.0.v20181030-2244.jar

And then, in that folder I executed the CLI main class of the batch compiler:

java -cp "*" org.eclipse.xtend.core.compiler.batch.Main -d <path-to-xtend-gen-folder>  -useCurrentClassLoader <path-to-src-folder>

CLI usage of main class is documented to be as following:

Usage: Main <options> <source directories>
where possible options include:
-d <directory>                      Specify where to place generated xtend files
-tp <path>                          Temp directory to hold generated stubs and classes
-cp <path>                          Specify where to find user class files
-encoding <encoding>                Specify character encoding used by source files
-javaSourceVersion <version>        Create Java Source compatible to this version. Can be: 1.5, 1.6, 1.7, 1.8, 9, 10
-noSuppressWarningsAnnotation       Don't put @SuppressWarnings() into generated Java Code
-generateGeneratedAnnotation        Put @Generated into generated Java Code
-includeDateInGeneratedAnnnotation  If -generateGeneratedAnnotation is used, add the current date/time.
-generateAnnotationComment <string> If -generateGeneratedAnnotation is used, add a comment.
-useCurrentClassLoader              Use current classloader as parent classloader
-writeTraceFiles                    Write Trace-Files

so you will need to pass your classpath there.