Skip to content
This repository has been archived by the owner on Sep 13, 2024. It is now read-only.

Remove tycho #31

Closed
wants to merge 4 commits into from
Closed

Remove tycho #31

wants to merge 4 commits into from

Conversation

cstamas
Copy link
Member

@cstamas cstamas commented Mar 20, 2023

This PR just removes tycho, in similar way as happened in sisu.inkect.
This PR DOES NOT ADDS OSGI metadata, I'd leave that to one of you two.

One important change: given sisu now has it's own Typed, PostConstruct and PreDestroy annotations, the current two annotation deps (javax.annotation-api and cdi-api) are marked as provided/optional. There is no more need to drag these along, and if someone needs them, can just add them as dependencies (same logic applies as with guice for example).

Partially fixes #28

A simple and naive attempt, but fails
@cstamas cstamas requested review from mcculls and kwin March 20, 2023 14:33
@cstamas cstamas self-assigned this Mar 20, 2023
@@ -0,0 +1,2 @@
Bundle-Name: Sisu-Plexus Extender (Incubation)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mcculls I don't understand the need of this empty bundle

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not completely empty - it contains a META-INF/services file which will get picked up by sisu-inject's extender (the OSGi metadata here should have a fragment entry as in the previous manifest.)

For Maven's purposes you can ignore these extender bundles - they exist only to activate certain behaviour in the main bundles. The reason they are separate is to make deployment easier; so users can choose whether to just have the basic behaviour provided by the main bundles, or a more advanced extension mechanism driven by BundlePlans.

@kwin
Copy link
Contributor

kwin commented Mar 20, 2023

The newly generated MANIFEST.MF looks like this:

Manifest-Version: 1.0
Bundle-Copyright: Copyright (c) 2010-present Sonatype, Inc. and others
Bundle-Description: Plexus-JSR330 adapter; adds Plexus support to the 
 Sisu-Inject container
Bundle-DocURL: http://www.eclipse.org/sisu/
Bundle-License: "Eclipse Public License, Version 1.0";link="http://www
 .eclipse.org/legal/epl-v10.html"
Bundle-ManifestVersion: 2
Bundle-Name: Sisu-Plexus (Incubation)
Bundle-SCM: url="https://github.com/eclipse/sisu.plexus/org.eclipse.si
 su.plexus",connection="scm:git:git://github.com/eclipse/sisu.plexus.g
 it/org.eclipse.sisu.plexus",developer-connection="scm:git:git@github.
 com:eclipse/sisu.plexus.git/org.eclipse.sisu.plexus",tag=HEAD
Bundle-SymbolicName: org.eclipse.sisu.plexus;singleton:=true
Bundle-Vendor: The Eclipse Foundation
Bundle-Version: 0.9.0.SNAPSHOT
Export-Package: org.eclipse.sisu.plexus;uses:="com.google.inject,com.g
 oogle.inject.matcher,com.google.inject.spi,javax.inject,org.codehaus.
 plexus.classworlds,org.codehaus.plexus.classworlds.realm,org.codehaus
 .plexus.component.annotations,org.codehaus.plexus.component.configura
 tor,org.codehaus.plexus.component.configurator.converters.lookup,org.
 codehaus.plexus.component.configurator.expression,org.codehaus.plexus
 .component.repository,org.codehaus.plexus.configuration,org.codehaus.
 plexus.context,org.codehaus.plexus.logging,org.eclipse.sisu.bean,org.
 eclipse.sisu.inject,org.eclipse.sisu.launch,org.eclipse.sisu.space,or
 g.osgi.framework";version="0.9.0",org.codehaus.plexus;uses:="com.goog
 le.inject,org.codehaus.plexus.classworlds,org.codehaus.plexus.classwo
 rlds.realm,org.codehaus.plexus.component.composition,org.codehaus.ple
 xus.component.repository,org.codehaus.plexus.component.repository.exc
 eption,org.codehaus.plexus.configuration,org.codehaus.plexus.context,
 org.codehaus.plexus.logging,org.eclipse.sisu.plexus";version="0.9.0",
 org.codehaus.plexus.classworlds;version="2.6.0";uses:="org.codehaus.p
 lexus.classworlds.realm",org.codehaus.plexus.classworlds.launcher;ver
 sion="2.6.0";uses:="org.codehaus.plexus.classworlds,org.codehaus.plex
 us.classworlds.realm",org.codehaus.plexus.classworlds.realm;version="
 2.6.0";uses:="org.codehaus.plexus.classworlds,org.codehaus.plexus.cla
 ssworlds.strategy",org.codehaus.plexus.classworlds.strategy;version="
 2.6.0";uses:="org.codehaus.plexus.classworlds.realm",org.codehaus.ple
 xus.component;uses:="org.codehaus.plexus.component.configurator,org.c
 odehaus.plexus.component.repository";version="0.9.0",org.codehaus.ple
 xus.component.annotations;version="0.9.0",org.codehaus.plexus.compone
 nt.composition;version="0.9.0",org.codehaus.plexus.component.configur
 ator;uses:="org.codehaus.plexus.classworlds.realm,org.codehaus.plexus
 .component.configurator.converters.lookup,org.codehaus.plexus.compone
 nt.configurator.expression,org.codehaus.plexus.configuration";version
 ="0.9.0",org.codehaus.plexus.component.configurator.converters;uses:=
 "org.codehaus.plexus.component.configurator,org.codehaus.plexus.compo
 nent.configurator.converters.lookup,org.codehaus.plexus.component.con
 figurator.expression,org.codehaus.plexus.configuration";version="0.9.
 0",org.codehaus.plexus.component.configurator.converters.basic;uses:=
 "org.codehaus.plexus.component.configurator,org.codehaus.plexus.compo
 nent.configurator.converters,org.codehaus.plexus.component.configurat
 or.converters.lookup,org.codehaus.plexus.component.configurator.expre
 ssion,org.codehaus.plexus.configuration";version="0.9.0",org.codehaus
 .plexus.component.configurator.converters.composite;uses:="org.codeha
 us.plexus.component.configurator,org.codehaus.plexus.component.config
 urator.converters,org.codehaus.plexus.component.configurator.converte
 rs.lookup,org.codehaus.plexus.component.configurator.expression,org.c
 odehaus.plexus.configuration";version="0.9.0",org.codehaus.plexus.com
 ponent.configurator.converters.lookup;uses:="org.codehaus.plexus.comp
 onent.configurator,org.codehaus.plexus.component.configurator.convert
 ers";version="0.9.0",org.codehaus.plexus.component.configurator.conve
 rters.special;uses:="org.codehaus.classworlds,org.codehaus.plexus.cla
 ssworlds.realm,org.codehaus.plexus.component.configurator,org.codehau
 s.plexus.component.configurator.converters,org.codehaus.plexus.compon
 ent.configurator.converters.lookup,org.codehaus.plexus.component.conf
 igurator.expression,org.codehaus.plexus.configuration";version="0.9.0
 ",org.codehaus.plexus.component.configurator.expression;version="0.9.
 0",org.codehaus.plexus.component.factory;uses:="org.codehaus.classwor
 lds,org.codehaus.plexus,org.codehaus.plexus.classworlds.realm,org.cod
 ehaus.plexus.component.repository";version="0.9.0",org.codehaus.plexu
 s.component.repository;uses:="org.codehaus.plexus.classworlds.realm,o
 rg.codehaus.plexus.configuration";version="0.9.0",org.codehaus.plexus
 .component.repository.exception;version="0.9.0",org.codehaus.plexus.c
 onfiguration;version="0.9.0",org.codehaus.plexus.configuration.xml;us
 es:="org.codehaus.plexus.configuration,org.codehaus.plexus.util.xml";
 version="0.9.0",org.codehaus.plexus.context;version="0.9.0",org.codeh
 aus.plexus.logging;uses:="org.codehaus.plexus.personality.plexus.life
 cycle.phase,org.eclipse.sisu.bean";version="0.9.0",org.codehaus.plexu
 s.logging.console;uses:="org.codehaus.plexus.logging";version="0.9.0"
 ,org.codehaus.plexus.personality.plexus.lifecycle.phase;uses:="org.co
 dehaus.plexus,org.codehaus.plexus.component.repository.exception,org.
 codehaus.plexus.configuration,org.codehaus.plexus.context";version="0
 .9.0",org.codehaus.plexus.util;uses:="org.codehaus.plexus.util.io,org
 .codehaus.plexus.util.xml";version="0.9.0",org.codehaus.plexus.util.c
 li;uses:="org.codehaus.plexus.util.cli.shell";version="0.9.0",org.cod
 ehaus.plexus.util.cli.shell;version="0.9.0",org.codehaus.plexus.util.
 dag;version="0.9.0",org.codehaus.plexus.util.introspection;version="0
 .9.0",org.codehaus.plexus.util.io;version="0.9.0",org.codehaus.plexus
 .util.reflection;version="0.9.0",org.codehaus.plexus.util.xml;uses:="
 org.codehaus.plexus.util.xml.pull";version="0.9.0",org.codehaus.plexu
 s.util.xml.pull;version="0.9.0"
Import-Package: javax.inject,org.eclipse.sisu,org.eclipse.sisu.bean,or
 g.eclipse.sisu.inject,org.eclipse.sisu.launch,org.eclipse.sisu.plexus
 ,org.eclipse.sisu.space,org.eclipse.sisu.wire,com.google.inject;versi
 on="1.4",com.google.inject.binder;version="1.4",com.google.inject.mat
 cher;version="1.4",com.google.inject.name;version="1.4",com.google.in
 ject.spi;version="1.4",com.google.inject.util;version="1.4",org.osgi.
 framework;version="1.5",org.codehaus.classworlds,org.codehaus.plexus.
 component.annotations;resolution:=optional
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"

The old manual one was this

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.sisu.plexus;singleton:=true
Bundle-Version: 0.9.0.qualifier
Bundle-Name: Sisu-Plexus (Incubation)
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-Vendor: Eclipse Sisu
Bundle-Copyright: Copyright (c) 2010-present Sonatype, Inc. and others
Bundle-DocURL: http://www.eclipse.org/sisu/
Bundle-License: http://www.eclipse.org/legal/epl-v10.html
Import-Package: javax.inject,
 org.eclipse.sisu,
 org.eclipse.sisu.bean,
 org.eclipse.sisu.inject,
 org.eclipse.sisu.launch,
 org.eclipse.sisu.space,
 org.eclipse.sisu.wire,
 com.google.inject;version="1.4",
 com.google.inject.binder;version="1.4",
 com.google.inject.matcher;version="1.4",
 com.google.inject.name;version="1.4",
 com.google.inject.spi;version="1.4",
 com.google.inject.util;version="1.4",
 org.osgi.framework;version="1.5",
 org.codehaus.classworlds,
 org.codehaus.plexus.classworlds,
 org.codehaus.plexus.classworlds.realm,
 org.codehaus.plexus.util,
 org.codehaus.plexus.util.xml,
 org.codehaus.plexus.util.xml.pull,
 org.codehaus.plexus.component.annotations;resolution:=optional,
 org.slf4j;resolution:=optional,
 junit.framework;resolution:=optional
Export-Package: org.eclipse.sisu.plexus,
 org.codehaus.plexus,
 org.codehaus.plexus.component,
 org.codehaus.plexus.component.composition,
 org.codehaus.plexus.component.configurator,
 org.codehaus.plexus.component.configurator.converters,
 org.codehaus.plexus.component.configurator.converters.basic,
 org.codehaus.plexus.component.configurator.converters.composite,
 org.codehaus.plexus.component.configurator.converters.lookup,
 org.codehaus.plexus.component.configurator.converters.special,
 org.codehaus.plexus.component.configurator.expression,
 org.codehaus.plexus.component.factory,
 org.codehaus.plexus.component.repository,
 org.codehaus.plexus.component.repository.exception,
 org.codehaus.plexus.configuration,
 org.codehaus.plexus.configuration.xml,
 org.codehaus.plexus.context,
 org.codehaus.plexus.logging,
 org.codehaus.plexus.logging.console,
 org.codehaus.plexus.personality.plexus.lifecycle.phase

@mcculls Please cross-check.

@@ -40,6 +41,8 @@
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.2</version>
<scope>provided</scope>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This dependency is not necessary at compile time at all. Isn't the transitive dependency from sisu.inject enough?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you look at sisu.inject, it does NOT pulls in guice (any version) transitively, and this is on purpose: let user choose which one (out of supported, guice 3. 4 or 5) to use. As this PR eclipse-sisu/sisu-project#76 is merged (and Typed was already present), IMHO this should be also "opt in" dependency, as it is up to user which one to use from now on: user own annotation or this.

@@ -48,6 +51,8 @@
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>1.2</version>
<scope>provided</scope>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This dependency is not necessary at compile time at all. Isn't the transitive dependency from sisu.inject enough?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as for javax.annotation-api

@@ -32,6 +32,7 @@
<artifactId>guice</artifactId>
<version>4.0</version>
<scope>provided</scope>
<optional>true</optional>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How can this be optional? Guice is essential part of most of the classes, e.g. PlexusRequirements, PlexusConfigurations and others....

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as in sisu.inject... long time ago, goal was to make sisu.plexus drop in replacement (so throw out p-c-d and bring in plexus-shim, this project), but IMHO sisu.plexus should become and behave same as sisu.inject: let the user provide needed (and chosen) stuff instead.

Am actually +0 to undo this, I feel those annotations more important to leave out.

@@ -64,6 +69,20 @@
<artifactId>org.eclipse.sisu.inject</artifactId>
<version>${project.version}</version>
</dependency>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a mandatory dependency to javax.inject is necessary as well, as e.g. javax.inject.Provider is used in PlexusRequirements

@mcculls
Copy link
Contributor

mcculls commented Mar 25, 2023 via email

@mcculls
Copy link
Contributor

mcculls commented Mar 27, 2023

I found a few missing pieces during review so I went and re-applied the steps I took to de-tycho sisu-inject, but modified as appropriate for sisu-plexus. I've merged those to master - the only remaining piece is to align the latest plugin versions and do one last check of the final jars.

(I also haven't changed any of the dependency scopes yet)

@cstamas
Copy link
Member Author

cstamas commented Mar 28, 2023

Closing this PR as not needed anymore.

@cstamas cstamas closed this Mar 28, 2023
@cstamas cstamas deleted the remove-tycho branch March 28, 2023 13:19
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Get rid of Tycho packaging "eclipse-plugin"
3 participants