UIMA
  1. UIMA
  2. UIMA-2568

Redesign Eclipse Update Site for P2 and Maintainability

    Details

      Description

      We have several projects that use Eclipse features and their associated plugins:

      • uimaj-sdk: the set of basic plugins, like the Component Descriptor Editor, the Pear packager, the Eclipse Debug support, base runtime, etc.
      • uima-as: adds support for the deployment descriptor to the Component Descriptor Editor
      • cas-editor (currently packaged as part of the uimaj-sdk)
      • textmarker

      ----------

      The Update site manages various versions of these, and also supplies a top level "categorization" of these. The categorization is supplied (currently) in the top level "site.xml" file. In the P2 layout, this is provided by the
      category.xml file (there's an editor in Eclipse to create / maintain this).

      We currently are using the categories:

      • uima-tooling-and-runtimes
      • uima-as-tooling

      Convert to an approach which has multiple update sites, bound together
      by one top-level aggregate update site. This site lists the
      sub-sites; the Eclipse (P2) install support reads this, finds the sub-sites,
      reads them, and aggregates all of this into a seamless set of menus, as if all of these sub-sites had been put together.

      This design choice is taken to improve future maintenance. For example, to update the textmarker, only that sub-site would need updating.

      Make the subsites just be subdirectories of the published composite update site.

      The "categories" can be cross-cutting, across sub-update-sites. For instance, if we continue to have the category uima-tooling-and-runtimes then a sub-update-site might categorize some of its features here.

      Given that Eclipse has had support for P2 install formats since 2008, drop the no-longer used site.xml and digest.zip files.

      Convert the uimaj-eclipse-update-site to build a "subsite" for the composite
      site, in the P2 style. Change the build steps to use the p2 style Ant tasks, as pioneered by Peter. Change the build to fetch the entire set of versions, so the P2 builders can do their work with the complete set.
      Delete non-packed artifacts that have corresponding packed ones to reduce the size requirements.

      Add a new project, builds/trunk/eclipse-composite-update-site, based on the eclipse-packagings project. Updates to this would only be needed when the composite structure is changed. Make this reference (initially)
      two sub-update-sites - the uimaj-eclipse-update-site, and a new update site
      for the uima-as project. TextMarker would be a third update site that will be added once it's released.

      Change the uima-as project to add a new update site for it, which will "add"
      the deployment editor feature, in the P2 form.

      Update the build/parent-pom to change the update site build to use the new P2 tooling, to share consistent build and configuration setups across multiple update sites.

        Issue Links

          Activity

          Hide
          Peter Klügl added a comment -

          My simple Tycho test project is able to resolve the dependency to org.apache.uima.runtime, even if I add the composite repository as a p2 repository in the pom.

          Show
          Peter Klügl added a comment - My simple Tycho test project is able to resolve the dependency to org.apache.uima.runtime, even if I add the composite repository as a p2 repository in the pom.
          Hide
          Marshall Schor added a comment -

          Thanks, fixed.

          Show
          Marshall Schor added a comment - Thanks, fixed.
          Hide
          Peter Klügl added a comment -

          It will take a bit before I find the time to test it. The first thing that I noticed is that uimaj-eclipse-update-site/category.xml is missing its license header.

          Show
          Peter Klügl added a comment - It will take a bit before I find the time to test it. The first thing that I noticed is that uimaj-eclipse-update-site/category.xml is missing its license header.
          Hide
          Marshall Schor added a comment -

          I've now posted a copy of the built P2 update site (fully signed) at http://people.apache.org/~schor/uima-release-candidates/eclipse-update-site/

          I've successfully installed the uima and uima-as tools from that site in Eclipse 4.2., haven't tested earlier versions.

          Please test if this works with Tycho (I don't have that setup).

          Show
          Marshall Schor added a comment - I've now posted a copy of the built P2 update site (fully signed) at http://people.apache.org/~schor/uima-release-candidates/eclipse-update-site/ I've successfully installed the uima and uima-as tools from that site in Eclipse 4.2., haven't tested earlier versions. Please test if this works with Tycho (I don't have that setup).
          Hide
          Marshall Schor added a comment -

          The build component has a new project, uima-eclipse-composite-update-site, checked in. This only has information about the subfolder names of the subsites (currently uimaj and uima-as).

          It can be separately built, without any actual sub-site data - it just builds the composite xml metadata (and jars it up to compress it).

          I tested everything - the individual update sites work by themselves, and the composite site (with the sub-sites content added) works fine - merging the subsites nicely.

          Please test by

          • checking out the 3 projects: build/trunk/uima-eclipse-composite-update-site, uimaj/trunk/uimaj-eclipse-update-site, and uima-as/trunk/uima-as-eclipse-update-site
          • doing mvn package (or install - but only package is needed) on all three projects
          • "manually" copying the two sub-sites in uimaj/uimaj-eclipse-update-site/target/eclipse-update-site to build/trunk/uima-eclipse-composite-update-site/target/eclipse-update-site (changing the top folder name of the subsite to uimaj), and repeating this for the uima-as subsite.

          Then get a fresh eclipse 4.2 and install from the build/trunk/uima-eclipse-composite-update-site. You should see 2.4.0 and 2.3.1 (if you don't have the box checked to only show lastest versions) for the runtimes and tooling, including the deployment editor (coming from the uima-as).

          Show
          Marshall Schor added a comment - The build component has a new project, uima-eclipse-composite-update-site, checked in. This only has information about the subfolder names of the subsites (currently uimaj and uima-as). It can be separately built, without any actual sub-site data - it just builds the composite xml metadata (and jars it up to compress it). I tested everything - the individual update sites work by themselves, and the composite site (with the sub-sites content added) works fine - merging the subsites nicely. Please test by checking out the 3 projects: build/trunk/uima-eclipse-composite-update-site, uimaj/trunk/uimaj-eclipse-update-site, and uima-as/trunk/uima-as-eclipse-update-site doing mvn package (or install - but only package is needed) on all three projects "manually" copying the two sub-sites in uimaj/uimaj-eclipse-update-site/target/eclipse-update-site to build/trunk/uima-eclipse-composite-update-site/target/eclipse-update-site (changing the top folder name of the subsite to uimaj), and repeating this for the uima-as subsite. Then get a fresh eclipse 4.2 and install from the build/trunk/uima-eclipse-composite-update-site. You should see 2.4.0 and 2.3.1 (if you don't have the box checked to only show lastest versions) for the runtimes and tooling, including the deployment editor (coming from the uima-as).
          Hide
          Marshall Schor added a comment -

          The build takes one more parameter in your settings.xml file to locate the eclipse jar-processor:

          <uima-eclipse-jar-processor>${uima-maven-build-eclipse-home}/plugins/org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657.jar</uima-eclipse-jar-processor>
          
          Show
          Marshall Schor added a comment - The build takes one more parameter in your settings.xml file to locate the eclipse jar-processor: <uima-eclipse-jar-processor>${uima-maven-build-eclipse-home}/plugins/org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657.jar</uima-eclipse-jar-processor>
          Hide
          Marshall Schor added a comment -

          I've now gotten the uimaj-eclipse-update-site to build with the p2 style. I've successfully "installed" this into a new version of Eclipse (Juno 4.2), OK.

          I found via extensive internet searching how to pack200 compress the plugin Jars, and added that step. It takes about a minute to do this on my lenovo laptop 510. A later improvement (another Jira) would do this step once, during the build of the plugin artifact, and include that in the upload to maven central. Then, would change this build to fetch those, and skip the pack200 step.

          I also fixed the category.xml - it was only categorizing the 2.4.0 releases - I added the 2.3.1 releases. Releases before 2.3.1 are incubating releases, and are not in Maven central, so are not part of the new update site build, as noted above.

          I'll commit what I have so far to uimaj-eclipse-update-site - it no longer builds the old-style website stuff, and doesn't include anything for uima-as. Next Steps: add uima-as, then add a composite of both.

          Show
          Marshall Schor added a comment - I've now gotten the uimaj-eclipse-update-site to build with the p2 style. I've successfully "installed" this into a new version of Eclipse (Juno 4.2), OK. I found via extensive internet searching how to pack200 compress the plugin Jars, and added that step. It takes about a minute to do this on my lenovo laptop 510. A later improvement (another Jira) would do this step once, during the build of the plugin artifact, and include that in the upload to maven central. Then, would change this build to fetch those, and skip the pack200 step. I also fixed the category.xml - it was only categorizing the 2.4.0 releases - I added the 2.3.1 releases. Releases before 2.3.1 are incubating releases, and are not in Maven central, so are not part of the new update site build, as noted above. I'll commit what I have so far to uimaj-eclipse-update-site - it no longer builds the old-style website stuff, and doesn't include anything for uima-as. Next Steps: add uima-as, then add a composite of both.
          Hide
          Marshall Schor added a comment -

          The new build procedure assembles the entire update site, all versions, from published-to-maven jar artifacts. While in the incubator, we didn't publish these to maven central, so the older ones are not available. I plan to drop the older ones that are not in Maven. If a user complains, we'll need to have another process...

          Show
          Marshall Schor added a comment - The new build procedure assembles the entire update site, all versions, from published-to-maven jar artifacts. While in the incubator, we didn't publish these to maven central, so the older ones are not available. I plan to drop the older ones that are not in Maven. If a user complains, we'll need to have another process...
          Hide
          Marshall Schor added a comment -

          This is the second version of the new p2 design. (previous Jira link deleted - it was backwards)

          Show
          Marshall Schor added a comment - This is the second version of the new p2 design. (previous Jira link deleted - it was backwards)

            People

            • Assignee:
              Marshall Schor
              Reporter:
              Marshall Schor
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development