Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [tycho-dev] Extending Tycho to support more Eclipse Plugins Types

Hi Jan,

Thanks, I will try to follow up on this in the next couple of days. I completely agree that the best approach is a pluggable solution, but I am not familiar enough with Tycho to know where it would be best addressed. 



I did come up with a hack work-around yesterday. When TychoProject.setupProject(MavenSession session, MavenProject project) is called, I override this method in my class and set the projects packaging to eclipse-plugin, and set the original packaging in the project context. After Tycho resolves dependencies and kicks off the maven build I revert the MavenProject object back to its original packaging during the validation phase for the rest of the maven build. But I would like to get a patch into a future release of Tycho, I hate hacks :)

Dan

On 8/6/15, 12:15 AM, "tycho-dev-bounces@xxxxxxxxxxx on behalf of Sievers, Jan" <tycho-dev-bounces@xxxxxxxxxxx on behalf of jan.sievers@xxxxxxx> wrote:

>> Is there any way I can provide this as a patch? Do I need to create a bug and
>> submit a patch there? 
>
>yes, open an enhancement and we can follow up there. In general, see [1] for how to contribute.
>Simply assuming a bundle for any unknown packaging type is maybe not a good idea so we'd need something pluggable.
>If this is the only change in Tycho code you needed to use an alternative packaging type, I wonder if this could be generalized for other packaging types.
>
>Regards
>Jan
>
>[1] https://wiki.eclipse.org/Tycho/Contributor_Guide 
>
>
>I realize that this would probably better be handled by
>> allowing a plexus component to provide a packaging hint for this class when
>> the true project packaging is something else.
>> --------------------------
>> 
>> DANIJOH2-M-V0MA:org.eclipse.tycho danijoh2$ git diff
>> diff --git a/tycho-
>> bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2
>> /impl/publisher/P2GeneratorImpl.java b/tycho-
>> bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2
>> /impl/publisher/P2GeneratorImpl.java
>> index a3d1966..fd3b2fb 100644
>> --- a/tycho-
>> bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2
>> /impl/publisher/P2GeneratorImpl.java
>> +++ b/tycho-
>> bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2
>> /impl/publisher/P2GeneratorImpl.java
>> @@ -231,14 +231,7 @@ public class P2GeneratorImpl extends
>> AbstractMetadataGenerator implements P2Gene
>> 
>>          String packaging = artifact.getPackagingType();
>>          File location = artifact.getLocation();
>> -        if (PackagingType.TYPE_ECLIPSE_PLUGIN.equals(packaging)
>> -                || PackagingType.TYPE_ECLIPSE_TEST_PLUGIN.equals(packaging))
>> {
>> -            if (dependenciesOnly && optionalAction != null) {
>> -                actions.add(new BundleDependenciesAction(location,
>> optionalAction));
>> -            } else {
>> -                actions.add(new BundlesAction(new File[] { location }));
>> -            }
>> -        } else if (PackagingType.TYPE_ECLIPSE_FEATURE.equals(packaging)) {
>> +       if (PackagingType.TYPE_ECLIPSE_FEATURE.equals(packaging)) {
>>              Feature feature = new FeatureParser().parse(location);
>>              feature.setLocation(location.getAbsolutePath());
>>              if (dependenciesOnly) {
>> @@ -300,7 +293,11 @@ public class P2GeneratorImpl extends
>> AbstractMetadataGenerator implements P2Gene
>>          } else if (location.isFile() && location.getName().endsWith(".jar"))
>> {
>>              actions.add(new BundlesAction(new File[] { location }));
>>          } else {
>> -            throw new IllegalArgumentException("Unknown type of packaging "
>> + packaging);
>> +            if (dependenciesOnly && optionalAction != null) {
>> +                actions.add(new BundleDependenciesAction(location,
>> optionalAction));
>> +            } else {
>> +                actions.add(new BundlesAction(new File[] { location }));
>> +            }
>>          }
>> 
>>          return actions;
>> 
>> --------------------------
>> 
>> 
>> 
>> I look forward to hearing your thoughts on this.
>> 
>> Thanks,
>> Daniel
>> 
>> On 7/30/15, 4:44 PM, "Daniel Johnson (danijoh2)" <danijoh2@xxxxxxxxx> wrote:
>> 
>> >Hi,
>> >
>> >I realized the P2Resolver checked against the TargetPlatformConfiguration,
>> which has an addExtraRequirement(Dependency d); method.
>> >
>> >I wasn’t able to add to it during setupProject() as that is called before
>> the TargetPlatformConfiguration object is available, but I was able to modify
>> the configuration by overriding the method
>> readExecutionEnvironmentConfiguration() and adding extra dependencies at that
>> point in my TychoProject implementation.
>> >
>> >Dan
>> >
>> >On 7/30/15, 2:10 PM, "Daniel Johnson (danijoh2)" <danijoh2@xxxxxxxxx> wrote:
>> >
>> >
>> >>Thanks Igor,
>> >>
>> >>After looking at that page I noticed a maven/extension.xml in my project
>> that was exporting a number of packages that I think was causing the issues.
>> I removed the file and now I do not see any ClassCast exceptions.
>> >>
>> >>I am getting very close to getting this working end-to-end built on top of
>> Tycho 0.23.1, but still have one last question.
>> >>
>> >>With Tycho 0.11 in our Maven Plugin we were able to resolve a target
>> platform for a project along with extra dependencies, and were able to access
>> all its accompanying ArtifactDescriptor objects:
>> >>---------------------
>> >>        ArrayList<Dependency> dependencies = new ArrayList<Dependency>();
>> >>        dependencies.addAll(getDependencies()); // Dependencies from POM
>> >>        dependencies.addAll(getExtraDependencies()); // Platform specific
>> dependencies, e.g. org.eclipse.ui.cocoa
>> >>
>> >>// Resolves the target platform given the required bundles mentioned in the
>> project MANIFEST.MF and the list of extra dependencies
>> >>        TargetPlatform targetPlatform =
>> platformResolver.resolvePlatform(session, project, reactorProjects,
>> dependencies);
>> >>EquinoxInstallationDescription generationRuntime = new
>> DefaultEquinoxInstallationDescription(new TigerstripeArtifactKeyFactory());
>> >>        for (ArtifactDescriptor artifact :
>> targetPlatform.getArtifacts(TYPE_TIGERSTRIPE_MODULE)) {
>> >>  addArtifact(generationRuntime, artifact);
>> >>        }
>> >>
>> >>        for (ArtifactDescriptor artifact :
>> targetPlatform.getArtifacts(TYPE_ECLIPSE_PLUGIN)) {
>> >>  addArtifact(generationRuntime, artifact);
>> >>        }
>> >>
>> >>        EquinoxInstallation install =
>> installationFactory.createInstallation(generationRuntime, work);
>> >>execRuntime(install);
>> >>---------------------
>> >>
>> >>In Tycho 0.23.1, I see that the PreliminaryTargetPlatformImpl has access to
>> all of the IInstallableUnits listed by the update sites given in
>> <repositories> section in the POM or through the .target file listed in
>> target-platform-configuration plugin. However the
>> TychoProjectUtils.getDependencyArtifacts(project) method only returns the
>> DependencyArtifact objects for the required bundles mentioned in the
>> MANIFEST.MF. Is there any utility method to resolve the extra POM
>> dependencies and OS specific dependencies to ArtifactDescriptor objects?
>> >>---------------------
>> >>
>> >>        DependencyArtifacts dependencyArtifacts =
>> TychoProjectUtils.getDependencyArtifacts(project);
>> >>EquinoxInstallationDescription generationRuntime = new
>> DefaultEquinoxInstallationDescription();
>> >>        for (ArtifactDescriptor descriptor :
>> dependencyArtifacts.getArtifacts()) {
>> >>  addArtifact(generationRuntime, descriptor);
>> >>        }
>> >>
>> >>// TODO - How to get Tycho to resolve the extra dependencies??
>> >>
>> >>
>> >>
>> >>        EquinoxInstallation install =
>> installationFactory.createInstallation(generationRuntime, work);
>> >>
>> >>execRuntime(install);
>> >>---------------------
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>Any help is appreciated.
>> >>
>> >>Thanks,
>> >>Daniel
>> >>
>> >>On 7/29/15, 6:53 PM, "tycho-dev-bounces@xxxxxxxxxxx on behalf of Igor
>> Fedorenko" <tycho-dev-bounces@xxxxxxxxxxx on behalf of igor@xxxxxxxxxxxxxx>
>> wrote:
>> >>
>> >>>This page we've written earlier this year may be usefule
>> >>>
>> >>>http://takari.io/book/91-maven-classloading.html
>> >>>
>> >>>--
>> >>>Regards,
>> >>>Igor
>> >>>
>> >>>On Wed, Jul 29, 2015, at 09:51 PM, Daniel Johnson (danijoh2) wrote:
>> >>>> Hmm, it seems tycho-maven-plugin class loader is loading
>> >>>> DependencyArtifacts, and my plugin is loading
>> >>>> MultiEnvironmentDependencyArtifacts, but both have the same parent class
>> >>>> loader:
>> >>>>
>> >>>> class=org.eclipse.tycho.artifacts.DependencyArtifacts
>> >>>> classLoader=ClassRealm[extension>org.eclipse.tycho:tycho-maven-
>> plugin:0.23.1,
>> >>>> parent: sun.misc.Launcher$AppClassLoader@67d479cf]
>> >>>>
>> class=org.eclipse.tycho.core.osgitools.targetplatform.MultiEnvironmentDepende
>> ncyArtifacts
>> >>>> classLoader=ClassRealm[extension>org.eclipse.tigerstripe:tigerstripe-
>> plugin:0.12.0-SNAPSHOT,
>> >>>> parent: sun.misc.Launcher$AppClassLoader@67d479cf]
>> >>>>
>> >>>>
>> >>>> Any ideas?
>> >>>>
>> >>>> Dan
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> On 7/29/15, 6:35 PM, "Daniel Johnson (danijoh2)" <danijoh2@xxxxxxxxx>
>> >>>> wrote:
>> >>>>
>> >>>> >So I made decent progress on this today. You may notice my
>> configuration for the plexus-component-metadata was wrong. I had the goals,
>> but needed to wrap them in <executions><execution> tags. After that I saw the
>> info in components.xml was auto-generated, which is what I had expected
>> originally.
>> >>>> >
>> >>>> >So now I see my class is being invoked. I had to make a change in
>> P2DependencyResolver to skip trying to resolve dependency metadata for
>> projects it does not understand, as P2GeneratorImpl only works if invoked on
>> a standard Eclipse packaging type, otherwise it throws
>> IllegalArgumentException. I would share a patch for this, but before I do
>> that, I am hitting a ClassCastException, which as far as I can tell implies
>> my Maven plugin Mojo is running in a different Classpath container from Tycho
>> classes.
>> >>>> >
>> >>>> >In my Maven plugin Mojo I call
>> TychoProjectUtils.getDependencyArtifacts(project) line 174:
>> >>>> >
>> >>>> >173 EquinoxInstallationDescription generationRuntime = new
>> DefaultEquinoxInstallationDescription();
>> >>>> >174 DependencyArtifacts dependencyArtifacts =
>> TychoProjectUtils.getDependencyArtifacts(project);
>> >>>> >175 for (ArtifactDescriptor descriptor :
>> dependencyArtifacts.getArtifacts()) {
>> >>>> >176   addArtifact(generationRuntime, descriptor);
>> >>>> >177   getLog().info("Adding dependency artifact: " + descriptor + "
>> type="+ descriptor.getKey().getType());
>> >>>> >178 }
>> >>>> >179
>> >>>> >180 EquinoxInstallation install =
>> installationFactory.createInstallation(generationRuntime, work);
>> >>>> >181 boolean succeeded = execRuntime(install);
>> >>>> >
>> >>>> >
>> >>>> >But this line throws a ClassCastException internally:
>> >>>> >Caused by: java.lang.ClassCastException:
>> org.eclipse.tycho.core.osgitools.targetplatform.MultiEnvironmentDependencyArt
>> ifacts cannot be cast to org.eclipse.tycho.artifacts.DependencyArtifacts
>> >>>> >	at
>> org.eclipse.tycho.core.utils.TychoProjectUtils.getDependencyArtifacts(TychoPr
>> ojectUtils.java:37)
>> >>>> >	at
>> org.eclipse.tigerstripe.maven.generation.TigerstripeGenerationMojo.execute(Ti
>> gerstripeGenerationMojo.java:174)
>> >>>> >	at
>> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPlu
>> ginManager.java:101)
>> >>>> >
>> >>>> >
>> >>>> >But looking at tycho-core source code I see
>> MultiEnvironmentDependencyArtifacts does implement DependencyArtifacts class,
>> hence why I imagine the two classes must be on different class loaders.
>> >>>> >
>> >>>> >Can you share any background on the Tycho classloader, and why a Maven
>> mojo is not able to access the Tycho classes in this way? I will keep doing
>> some digging to see if I can find what the two class loaders are.
>> >>>> >
>> >>>> >Thanks,
>> >>>> >Daniel
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> >On 7/29/15, 11:20 AM, "Daniel Johnson (danijoh2)" <danijoh2@xxxxxxxxx>
>> wrote:
>> >>>> >
>> >>>> >>Hi Jan, Igor,
>> >>>> >>
>> >>>> >>I created a new class:
>> >>>> >>package org.eclipse.tigerstripe.tycho.resolver;
>> >>>> >>…
>> >>>> >>
>> >>>> >>@Component(role = P2MetadataProvider.class, hint = "tigerstripe-
>> module")
>> >>>> >>public class TigerstripeP2MetadataProvider implements
>> P2MetadataProvider, Initializable {
>> >>>> >>
>> >>>> >>  @Requirement
>> >>>> >>  EquinoxServiceFactory equinox;
>> >>>> >>
>> >>>> >>  @Requirement
>> >>>> >>  Logger logger;
>> >>>> >>
>> >>>> >>  private DependencyMetadataGenerator generator;
>> >>>> >>
>> >>>> >>  @Override
>> >>>> >>  public Map<String, IDependencyMetadata>
>> getDependencyMetadata(MavenSession session, MavenProject project,
>> >>>> >>    List<TargetEnvironment> environments, OptionalResolutionAction
>> action) {
>> >>>> >>
>> >>>> >>      logger.info("Configuring Tigerstripe Project: “ +
>> project.getBasedir().getAbsolutePath());
>> >>>> >>      Map<String, IDependencyMetadata> metadata = new
>> LinkedHashMap<String, IDependencyMetadata>();
>> >>>> >>      return metadata;
>> >>>> >>  }
>> >>>> >>
>> >>>> >>  public void initialize() throws InitializationException {
>> >>>> >>      this.generator =
>> equinox.getService(DependencyMetadataGenerator.class,
>> >>>> >>        "(role-hint=dependency-only)");
>> >>>> >>  }
>> >>>> >>
>> >>>> >>}
>> >>>> >>
>> >>>> >>
>> >>>> >>And defined in my components.xml:
>> >>>> >><component>
>> >>>> >>  <role>org.eclipse.tycho.p2.resolver.P2MetadataProvider</role>
>> >>>> >>  <role-hint>tigerstripe-module</role-hint>
>> >>>> >>
>> <implementation>org.eclipse.tigerstripe.tycho.resolver.TigerstripeP2MetadataP
>> rovider</implementation>
>> >>>> >>  <isolated-realm>false</isolated-realm>
>> >>>> >>  <requirements>
>> >>>> >>    <requirement>
>> >>>> >>      <role>org.eclipse.sisu.equinox.EquinoxServiceFactory</role>
>> >>>> >>      <role-hint />
>> >>>> >>      <field-name>equinox</field-name>
>> >>>> >>    </requirement>
>> >>>> >>    <requirement>
>> >>>> >>      <role>org.codehaus.plexus.logging.Logger</role>
>> >>>> >>      <role-hint></role-hint>
>> >>>> >>     <field-name>logger</field-name>
>> >>>> >>    </requirement>
>> >>>> >>  </requirements>
>> >>>> >>		</component>
>> >>>> >>
>> >>>> >>
>> >>>> >>I have my build plugins components.xml under src/main/resources/META-
>> INF/plexus/components.xml, and have defined the following build plugin:
>> >>>> >><plugin>
>> >>>> >>  <groupId>org.codehaus.plexus</groupId>
>> >>>> >>  <artifactId>plexus-component-metadata</artifactId>
>> >>>> >>  <goals>
>> >>>> >>    <goal>generate-metadata</goal>
>> >>>> >>  </goals>
>> >>>> >></plugin>
>> >>>> >>
>> >>>> >>
>> >>>> >>But still when building a project with this plugin I do not see my
>> metadata resolver class being invoked during project scanning:
>> >>>> >>DANIJOH2-M-V0MA:Test danijoh2$ mvn clean install
>> >>>> >>[INFO] Scanning for projects...
>> >>>> >>[INFO]
>> >>>> >>[INFO] ---------------------------------------------------------------
>> ---------
>> >>>> >>[INFO] Building Test 0.0.1-SNAPSHOT
>> >>>> >>[INFO] ---------------------------------------------------------------
>> ---------
>> >>>> >>[INFO]
>> >>>> >>[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ Test ---
>> >>>> >>...
>> >>>> >>
>> >>>> >>
>> >>>> >>I expected to see the info printout "Configuring Tigerstripe Project:
>> …”. Any idea what I missed that is not having my custom provider to be
>> invoked for a POM with packaging type ‘tigerstripe-module’?
>> >>>> >>
>> >>>> >>Thanks,
>> >>>> >>Daniel
>> >>>> >>
>> >>>> >>
>> >>>> >>
>> >>>> >>
>> >>>> >>
>> >>>> >>On 7/29/15, 8:22 AM, "tycho-dev-bounces@xxxxxxxxxxx on behalf of
>> Daniel Johnson (danijoh2)" <tycho-dev-bounces@xxxxxxxxxxx on behalf of
>> danijoh2@xxxxxxxxx> wrote:
>> >>>> >>
>> >>>> >>>Yes, that bug sounds like it is meant to address this sort of thing.
>> I will do some digging into what Igor has provided so far, and see if I can’t
>> figure out where this stands.
>> >>>> >>>
>> >>>> >>>Thanks!
>> >>>> >>>Daniel
>> >>>> >>>
>> >>>> >>>
>> >>>> >>>
>> >>>> >>>
>> >>>> >>>On 7/29/15, 12:36 AM, "tycho-dev-bounces@xxxxxxxxxxx on behalf of
>> Sievers, Jan" <tycho-dev-bounces@xxxxxxxxxxx on behalf of
>> jan.sievers@xxxxxxx> wrote:
>> >>>> >>>
>> >>>> >>>>>My question then, is there any way to provide contributions to
>> customize Tycho’s dependency resolution capabilities for third-party eclipse
>> project types?
>> >>>> >>>>
>> >>>> >>>>The enhancement https://bugs.eclipse.org/bugs/show_bug.cgi?id=364983
>> is still open (and it looks like noone has been working on it for a long
>> time)
>> >>>> >>>>Not sure if this would fit your usecase.
>> >>>> >>>>
>> >>>> >>>>For now you essentially forked Tycho and I'm afraid we can't help
>> you maintain the fork.
>> >>>> >>>>
>> >>>> >>>>Regards
>> >>>> >>>>Jan
>> >>>> >>>>
>> >>>> >>>>
>> >>>> >>>>From: tycho-dev-bounces@xxxxxxxxxxx [mailto:tycho-dev-
>> bounces@xxxxxxxxxxx] On Behalf Of Daniel Johnson (danijoh2)
>> >>>> >>>>Sent: Mittwoch, 29. Juli 2015 00:58
>> >>>> >>>>To: tycho-dev@xxxxxxxxxxx
>> >>>> >>>>Cc: tycho-user@xxxxxxxxxxx
>> >>>> >>>>Subject: [tycho-dev] Extending Tycho to support more Eclipse Plugins
>> Types
>> >>>> >>>>
>> >>>> >>>>Hi,
>> >>>> >>>>
>> >>>> >>>>I suspect this will be more a question for tycho-dev folks, but
>> cc’ing tycho-user mailer in case some of you have encountered this use-case
>> before.
>> >>>> >>>>
>> >>>> >>>>~5 years ago, around tycho 0.11.0 release, a fellow co-worker of
>> mine developed a maven plugin for building Tigerstripe eclipse plugins
>> leveraging Tycho. He was able to extend Tycho to support projects with
>> packaging type ‘tigerstripe-module’ by creating a new Plexus Component of
>> type OsgiBundleProject with a component role of TychoProject and a hint of
>> 'tigerstripe-module’:
>> >>>> >>>>----------------
>> >>>> >>>>import org.codehaus.plexus.component.annotations.Component;
>> >>>> >>>>import org.eclipse.tycho.core.TychoProject;
>> >>>> >>>>import org.eclipse.tycho.core.osgitools.OsgiBundleProject;
>> >>>> >>>>@Component(role = TychoProject.class, hint = "tigerstripe-module")
>> >>>> >>>>public class TigerstripeModuleProject extends OsgiBundleProject {
>> >>>> >>>>
>> >>>> >>>>    public void setupProject(MavenSession session, MavenProject
>> project) {
>> >>>> >>>>        getLogger().info(
>> >>>> >>>>                "Configuring Tigerstripe Project: "
>> >>>> >>>>                        + project.getBasedir().getAbsolutePath());
>> >>>> >>>>        ...
>> >>>> >>>>    }
>> >>>> >>>>    ...
>> >>>> >>>>}
>> >>>> >>>>----------------
>> >>>> >>>>
>> >>>> >>>>This type of project is unique in that some dependency information
>> is listed in a Tigerstripe specific file called tigerstripe.xml, so during
>> the set-up of the project and during classpath resolution some code was
>> introduced to parse the tigerstripe.xml and introduce the correct classpath
>> entries.
>> >>>> >>>>
>> >>>> >>>>Likewise the plexus components.xml was updated to define the new
>> artifact handler and lifecycle mapping:
>> >>>> >>>>----------------
>> >>>> >>>><component>
>> >>>> >>>>    <role>org.apache.maven.artifact.handler.ArtifactHandler</role>
>> >>>> >>>>    <role-hint>tigerstripe-module</role-hint>
>> >>>> >>>>
>> <implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</imp
>> lementation>
>> >>>> >>>>    <configuration>
>> >>>> >>>>        <classifier />
>> >>>> >>>>        <extension>jar</extension>
>> >>>> >>>>        <type>tigerstripe-module</type>
>> >>>> >>>>        <packaging>tigerstripe-module</packaging>
>> >>>> >>>>        <language>java</language>
>> >>>> >>>>        <addedToClasspath>true</addedToClasspath>
>> >>>> >>>>        <includesDependencies>false</includesDependencies>
>> >>>> >>>>    </configuration>
>> >>>> >>>></component>
>> >>>> >>>><component>
>> >>>> >>>>    <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
>> >>>> >>>>    <role-hint>tigerstripe-module</role-hint>
>> >>>> >>>>
>> <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</i
>> mplementation>
>> >>>> >>>>    <configuration>
>> >>>> >>>>      <lifecycles>
>> >>>> >>>>        <lifecycle>
>> >>>> >>>>            <id>default</id>
>> >>>> >>>>            <phases>
>> >>>> >>>>...
>> >>>> >>>>            </phases>
>> >>>> >>>>        </lifecycle>
>> >>>> >>>>      </lifecycles>
>> >>>> >>>>    </configuration>
>> >>>> >>>></component>
>> >>>> >>>>----------------
>> >>>> >>>>
>> >>>> >>>>Finally, it contained a ArtifactKeyFactory implementation to define
>> the tigerstripe-module type:
>> >>>> >>>>----------------
>> >>>> >>>>import org.codehaus.plexus.component.annotations.Component;
>> >>>> >>>>import org.codehaus.tycho.osgitools.DefaultArtifactKeyFactory;
>> >>>> >>>>import org.sonatype.tycho.ArtifactKeyFactory;
>> >>>> >>>>
>> >>>> >>>>@Component( role = ArtifactKeyFactory.class )
>> >>>> >>>>public class TigerstripeArtifactKeyFactory extends
>> DefaultArtifactKeyFactory {
>> >>>> >>>>
>> >>>> >>>>    public static final String TYPE_TIGERSTRIPE_MODULE =
>> "tigerstripe-module";
>> >>>> >>>>
>> >>>> >>>>    public static final String[] PROJECT_TYPES = {
>> TYPE_TIGERSTRIPE_MODULE };
>> >>>> >>>>
>> >>>> >>>>    public String[] getEclipsePluginTypes() {
>> >>>> >>>>        return PROJECT_TYPES;
>> >>>> >>>>    }
>> >>>> >>>>}
>> >>>> >>>>----------------
>> >>>> >>>>
>> >>>> >>>>With the old version of the plugin using tycho 0.11 I see that the
>> project is configured right at the beginning of the build, just as Maven is
>> scanning for projects to build:
>> >>>> >>>>DANIJOH2-M-V0MA:Test2 danijoh2$ mvn clean install
>> >>>> >>>>[INFO] Scanning for projects...
>> >>>> >>>>[INFO] Configuring Tigerstripe Project:
>> /Users/danijoh2/Workspaces/Fault/Test2
>> >>>> >>>>[WARNING] No explicit target runtime environment configuration.
>> Build is platform dependent.
>> >>>> >>>>[INFO] Resolving target platform for project MavenProject:
>> com.cisco.xmp:Test2:0.0.1-SNAPSHOT @
>> /Users/danijoh2/Workspaces/Fault/Test2/pom.xml
>> >>>> >>>>[INFO] Starting resolution of Tigerstripe Implementation Model
>> >>>> >>>>[INFO]
>> >>>> >>>>[INFO] -------------------------------------------------------------
>> -----------
>> >>>> >>>>[INFO] Building Test2 0.0.1-SNAPSHOT
>> >>>> >>>>
>> >>>> >>>>
>> >>>> >>>>However, after trying to upgrade to Tycho 0.23.0 (and re-factoring a
>> lot of code, since tycho classes had moved under org.eclipse namespace) , I
>> see that the project is not set-up at all, and it doesn’t even seem that
>> Tycho is running its magic:
>> >>>> >>>>DANIJOH2-M-V0MA:Test danijoh2$ mvn clean install
>> >>>> >>>>[INFO] Scanning for projects...
>> >>>> >>>>[INFO]
>> >>>> >>>>[INFO] -------------------------------------------------------------
>> -----------
>> >>>> >>>>[INFO] Building Test 0.0.1-SNAPSHOT
>> >>>> >>>>
>> >>>> >>>>My question then, is there any way to provide contributions to
>> customize Tycho’s dependency resolution capabilities for third-party eclipse
>> project types?
>> >>>> >>>>
>> >>>> >>>>It seems that the DefaultArtifactKeyFactory and ArtifactKeyFactory
>> classes have been removed and replaced with ArtifactType and PackagingType in
>> tycho.embedder.shared -
>> http://grepcode.com/file/repo1.maven.org/maven2/org.eclipse.tycho/org.eclipse
>> .tycho.embedder.shared/0.23.0/org/eclipse/tycho/PackagingType.java
>> >>>> >>>>So I had to remove that class from the source code, but other than
>> that the transformation went pretty smooth.
>> >>>> >>>>
>> >>>> >>>>I just don’t understand what I changed/broke that causes the build
>> to no longer invoke the setupProject() method of the contributing
>> TychoProject (read: TigerstripeModuleProject) class, unless newer versions of
>> Tycho simply cannot be extended in this way?
>> >>>> >>>>
>> >>>> >>>>Thanks,
>> >>>> >>>>Daniel
>> >>>> >>>>
>> >>>> >>>>
>> >>>> >>>>_______________________________________________
>> >>>> >>>>tycho-dev mailing list
>> >>>> >>>>tycho-dev@xxxxxxxxxxx
>> >>>> >>>>To change your delivery options, retrieve your password, or
>> unsubscribe from this list, visit
>> >>>> >>>>https://dev.eclipse.org/mailman/listinfo/tycho-dev
>> >>>> >>>_______________________________________________
>> >>>> >>>tycho-dev mailing list
>> >>>> >>>tycho-dev@xxxxxxxxxxx
>> >>>> >>>To change your delivery options, retrieve your password, or
>> unsubscribe from this list, visit
>> >>>> >>>https://dev.eclipse.org/mailman/listinfo/tycho-dev
>> >>>> _______________________________________________
>> >>>> tycho-dev mailing list
>> >>>> tycho-dev@xxxxxxxxxxx
>> >>>> To change your delivery options, retrieve your password, or unsubscribe
>> >>>> from this list, visit
>> >>>> https://dev.eclipse.org/mailman/listinfo/tycho-dev
>> >>>_______________________________________________
>> >>>tycho-dev mailing list
>> >>>tycho-dev@xxxxxxxxxxx
>> >>>To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> >>>https://dev.eclipse.org/mailman/listinfo/tycho-dev
>> _______________________________________________
>> tycho-dev mailing list
>> tycho-dev@xxxxxxxxxxx
>> To change your delivery options, retrieve your password, or unsubscribe from
>> this list, visit
>> https://dev.eclipse.org/mailman/listinfo/tycho-dev
>_______________________________________________
>tycho-dev mailing list
>tycho-dev@xxxxxxxxxxx
>To change your delivery options, retrieve your password, or unsubscribe from this list, visit
>https://dev.eclipse.org/mailman/listinfo/tycho-dev

Back to the top