Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] Automatic project changes resolution

Let me give you brief overview of what onboarding actually does first.
Well, "brief" compared to the scope of what onboarding does ;-)

At high-level, onboarding implements two related user stories

1 as a new project developer I need to create project development
  environment according to the recommendations provided by the project
  lead. (we call this "development environment materialization")
2 as a project developer, I want to update my existing project
  development environment to match the most recent recommendations
  provided by the project lead.

Note that these user stories can be rewritten from project lead point of
view, where the project lead wants to "push" recommendations to all
project developers.

Currently, "recommendations" can cover the following aspects of
development environment configuration

* Eclipse installation, i.e. plugins and features.
* Eclipse workspace preferences. Not everything, mind you, I believe
  only Maven settings.xml and JDT preferences are supported at the
  moment.
* Actual project sources. Currently GIT, SVN and CVS are supported via
  their respective team providers.

Development environment materilazation is initiated by running JNLP
installaer application. The URL of the installer can come as part of
"welcome to the project" email or be provided on project wiki page, for
example. Once the installer starts, it asks the user for installation
and workspace locations, credentials to access remote resources and then
installs required eclipse plugins and features, creates the workspace
and checks out and imports all project sources.

Development environment update is initiated from within running Eclipse
instance. It will check for updates to eclipse installation and source
code updates.

There is obviously much more to tell about onboarding from user point of
view, but this should provide sufficient context to explain internal
implementations. Briefly, of course ;-)

Development environment is described by two xml documents. "Codebase"
descriptor provides information about source code repositories,
workspace preferences and required eclipse installation contents via
reference to a "p2 lineup descriptor". P2 lineup descriptor basically
lists plugins and/or features and things like JVM args passed to Eclipse
runtime.

Overall onboarding functionality is split in several components.

Codebase and lineup descriptors are managed by nexus plugins running
inside nexus server. REST APIs can be used to retrieve information about
available codebases and lineups, and validate and publish new ones.
Lineups are fully resolved and cached on the server, so all clients get
exactly the same set of plugins and features even if remote p2
repositories contents changes. Corresponding sources can be found under
onboarding-nexus/ and onboarding-nexus-p2-runtime/ subdirectories of
onboarding source code repository.

Codebase materialization, i.e. consumption of codebase and lineup
descriptors, is implemented by a number of Eclipse plugins, which are
packaged into JNLP installer application and can also be installed
directly. There is also Eclipse-based tooling to author codebase and
lineup descriptors and to publish them to the server. All client side
code can be found under ´╗┐onboarding-m2e/ subdirectory.

Classes found under onboarding-models/ directory of onboarding source
code repository define codebase and lineup descriptor xml formats and
serialized form used REST APIs.

Classes found in eclipse-commons source code repository provide some
common/generic components used by several Sonatype projects and are not
specific to onboarding.

It is important to note that there were incompatible changes in p2
between Eclipse 3.5 (a.k.a. galileo) and 3.6 (a.k.a. helios), so
managing of eclipse 3.5.x and 3.6.x+ installations is implemented by
separately. We tested onboarding with Eclipse 3.5.x and 3.6.x, but 3.7.x
and 3.8 are expected to work too.

JNLP installer application found under onboarding-m2e/installer is based
on Eclipse 3.6.x (probably 3.6.2, but I am not 100% sure).

... and to answer your question, looks like you are using galileo target
platform and you need to use helios. We should probably remove eclipse
3.5.x support altogether.

Hope this helps.


--
Regards,
Igor


On 11-10-10 9:51 AM, Java Questions wrote:
Ok. I also cloned/imported
https://github.com/sonatype/interactive-interpolation.git and that
solved another issue. Now I'm down to just 19 compile errors ;)

The majority of them are related to "ProfileChangeRequest", although
'org.eclipse.equinox.internal.provisional.p2.director" package is
available. It just doesn't have that class...

  Any quick tips?

Description    Resource    Path    Location    Type
PREFS_ARCHETYPES cannot be resolved or is not a field
M2EclipsePreferenceGroup.java
/com.sonatype.s2.project.core/src/main/java/com/sonatype/s2/project/prefs/internal
line 36    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 376    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 379    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 379    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 703    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 756    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 800    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 816    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 1162    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 1162    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 1254    Java Problem
ProfileChangeRequest cannot be resolved to a type    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 1254    Java Problem
The constructor StructuredViewerProvisioningListener(String,
StructuredViewer, int) is undefined    AvailableGroupWrapper.java
/com.sonatype.s2.extractor.helios/src/main/java/com/sonatype/s2/extractor
line 630    Java Problem
The import
org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest cannot
be resolved    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 48    Java Problem
The method addProvisioningListener(StructuredViewerProvisioningListener)
is undefined for the type ProvUI    AvailableGroupWrapper.java
/com.sonatype.s2.extractor.helios/src/main/java/com/sonatype/s2/extractor
line 646    Java Problem
The method buildProvisioningRequest(IProfile, IInstallableUnit[],
IInstallableUnit[]) from the type P2Installer refers to the missing type
ProfileChangeRequest    P2Installer.java
/com.sonatype.s2.installer/src/com/sonatype/s2/installer/internal
line 757    Java Problem
The method getArchetypeManager() is undefined for the type
MavenPlugin    M2EclipsePreferenceGroup.java
/com.sonatype.s2.project.core/src/main/java/com/sonatype/s2/project/prefs/internal
line 86    Java Problem
The method getMavenProjectManager() is undefined for the type
MavenPlugin    AbstractSourceTreeOperation.java
/com.sonatype.s2.project.core/src/main/java/com/sonatype/s2/project/core/internal/update
line 71    Java Problem
The method
removeProvisioningListener(StructuredViewerProvisioningListener) is
undefined for the type ProvUI    AvailableGroupWrapper.java
/com.sonatype.s2.extractor.helios/src/main/java/com/sonatype/s2/extractor
line 651    Java Problem

Thanks,
Andrii



Back to the top