ModelDriven / Alf-Reference-Implementation

Open-source implementation of the Action Language for fUML (Alf) specification.
30 stars 2 forks source link

Adopt Maven+Tycho to allow automated builds #76

Closed abstratt closed 4 years ago

abstratt commented 5 years ago

Adopt Maven+Tycho to allow automated builds of the Alf RI. This would also make it easier to provision the project into a developer's workspace, remove the need for keeping binaries for dependencies in the source repository, publish the Alf RI as Maven artifact to Maven repositories, or Eclipse-compatible components as a P2 repository for better adoption, make it easier to use continuous integration tools (such as Travis), among other benefits.

abstratt commented 4 years ago

Progress so far mavenized the non-Eclipse-based projects:

Now need to cover the Eclipse-based projects, which need to be built under Tycho.

@seidewitz How do you distribute the Eclipse related artifacts (org.modeldriven.alf.eclipse and org.modeldriven.alf.eclipse.moka) for downstream consumers? I am looking into the dist/directory under the alf.zip file that is checked into the Git repository and trying to reverse engineer how they are built but I think it would be best if you described how those JARs are produced, and how they are consumed. Since I could not find any deployable plug-in or feature packages, I wonder how Eclipse-land consumers obtain them.

This is assuming you are interested in streamlining/automating how the distributable packages are produced for the final consumers (as the initial issue description requested - but since I wrote it, thought it would be best that you confirmed that is indeed a goal).

seidewitz commented 4 years ago

The current manual steps for building the distribution JARs are:

  1. Export org.modeldriven.alf/src to the (non-runnable) JAR file org.modeldriven.alf/dist/alf-base.jar.
  2. Create the following runnable JAR files (using the "Extract required libraries into generated JAR" option):
    1. Export the alf run configuration (main program org.modeldriven.alf.fuml.impl.execution.Alf) to org.modeldriven.alf.fuml.impl/dist/alf.jar.
    2. Export the alfc run configuration (main program org.modeldriven.alf.eclipse.fuml.execution.AlfCompiler) to org.modeldriven.alf.eclipse/dist/alf-eclipse.jar.
    3. Export the fuml run configuration (main program org.modeldriven.alf.eclipse.moka.execution.Fuml) to org.modeldriven.alf.eclipse.moka/dist/fuml-eclipse.jar (this is also copied into org.modeldriven.alf.eclipse/dist).
  3. The JARs alf.jar, alf-eclipse.jar and fuml-eclipse.jar (but not alf-base.jar) go into the alf/dist directory in the org.modeldriven.alf-dist/alf.zip archive. (Note: org.modeldriven.alf-dist is the Eclipse project name, the directory is called just dist in the GitHub repository.)

Most of the other files in the org.modeldriven.alf-dist project are rarely updated, except for the archives tests-uml.zip and tests-x.zip, which are regenerated for each release. However, as a first step, is sufficient that the Maven build simply create the alf-base.jar, alf.jar, alf-eclipse.jar and fuml-eclipse.jar files in their respective projects, as listed above. We can deal with more sophisticated distribution packaging later.

abstratt commented 4 years ago

However, as a first step, is sufficient that the Maven build simply create the alf-base.jar, alf.jar, alf-eclipse.jar and fuml-eclipse.jar files in their respective projects, as listed above. We can deal with more sophisticated distribution packaging later.

This is now supposedly done in #94. Looking for your feedback, @seidewitz.

seidewitz commented 4 years ago

Resolved in v1.1.0j.