Preloader image

The Eclipse Transformer provides translation from javax to jakarta on various artifacts, including Java source source, compiled Java classes, along with jar, war and ear files.

Building

The Transformer is a project at the Eclipse Foundation, and is built using Gradle. To checkout and build from source, do the following:

git clone https://github.com/tbitonti/jakartaee-prototype
cd jakartaee-prototype
./gradlew assembleDist

This will produce a tar and a zip in the transformer/build/distributions directory.

Running

Unzip the resulting zip file, and add the bin directory to your PATH variable, and you should be able to run the transformer using the transformer script.

Running transformer -u will provide the usage information:

usage: org.eclipse.transformer.Transformer input [ output ] [ options ]
Options:
 -d,--dryrun                    Dry run
 -h,--help                      Display help
 -i,--invert                    Invert transformation rules
 -lf,--logFile <arg>            Logging file
 -ll,--logLevel <arg>           Logging level
 -ln,--logName <arg>            Logger name
 -lp,--logProperty <arg>        Logging property
 -lpf,--logPropertyFile <arg>   Logging properties file
 -o,--overwrite                 Overwrite
 -q,--quiet                     Display quiet output
 -t,--type <arg>                Input file type
 -tb,--bundles <arg>            Transformation bundle updates URL
 -td,--direct <arg>             Transformation direct string replacements
 -tf,--xml <arg>                Map of XML filenames to property files
 -tr,--renames <arg>            Transformation package renames URL
 -ts,--selection <arg>          Transformation selections URL
 -tv,--versions <arg>           Transformation package versions URL
 -u,--usage                     Display usage
 -v,--verbose                   Display verbose output
Actions:
  [ NULL ]
  [ CLASS ]
  [ MANIFEST ]
  [ FEATURE ]
  [ SERVICE_LOADER_CONFIG ]
  [ XML ]
  [ ZIP ]
  [ JAR ]
  [ WAR ]
  [ RAR ]
  [ EAR ]
  [ JAVA ]
  [ DIRECTORY ]
Logging Properties:
  [ org.slf4j.simpleLogger.logFile ]
  [ org.slf4j.simpleLogger.cacheOutputStream ]
  [ org.slf4j.simpleLogger.defaultLogLevel ]
  [ org.slf4j.simpleLogger.log.a.b.c ]
  [ org.slf4j.simpleLogger.levelInBrackets ]
  [ org.slf4j.simpleLogger.showDateTime ]
  [ org.slf4j.simpleLogger.dateTimeFormat ]
  [ org.slf4j.simpleLogger.showThreadName ]
  [ org.slf4j.simpleLogger.showLogName ]
  [ org.slf4j.simpleLogger.showShortLogName ]
  [ org.slf4j.simpleLogger.warnLevelString ]

With an already built and extracted TomEE server, we can do some experimentation.

Rename the lib folder:

mv lib javaee-lib

Create a Jakarta EE lib folder:

mkdir jakartaee-lib

Translate each of the jars in the javaee-lib folder:

cd javaee-lib

for f in *; do transformer $f ../jakartaee-lib/$f -tr <path/to/rules/file>; done

See the rules section below for the rules file.

Symlink jakartaee-lib folder to lib:

cd ..
ln -s jakartaee-lib lib

You should now be able to start a Jakarta-ized version of TomEE. (Expect errors - these can be discussed on the list)

Rules

The current rules for package renames are in the transformer/jakarta-renames.properties file in the main TomEE source repository.