Version 3.1.0 of Apache Maven was recently released. It is a long-awaited release which brings numerous new features and fixes many bugs. A full list is available in Maven 3.1.0 release notes [1].
I think it's important for Fedora to switch to new Maven as soon as possible. Unfortunately there are signifficant incompatibilities between Maven 3.1.0 and 3.0.5 which make this process non-trivial.
Maven 3.1.0 switched from Sonatype Aether to Eclipse Aether and from Sonatype Sisu to Eclipse Sisu. Plugins that directly depend on Aether or Sisu may no longer work with Maven 3.1.0. Upstream lists [2] some plugins that were or need to be updated to work with Maven 3.1.0.
I have created a tracker bug [3] which is intended to lists tasks needed to be done in order to migrate to Maven 3.1.0 as well as any bugs related to the migration. I have populated the tracker with all changes needed that I am aware of at the moment, but feel free to add more bugs if you find them.
This is fairly complicated process as there are circular package dependencies because of which several packages need to be updated at the same time. I will ask release engineering to create a dedicated Koji tag in order not to break rawhide during the process.
[1] http://maven.apache.org/docs/3.1.0/release-notes.html [2] http://cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFound [3] http://bugzilla.redhat.com/985674
-- Mikolaj Izdebski Software Engineer, Red Hat IRC: mizdebsk
----- Original Message -----
From: "Mikolaj Izdebski" mizdebsk@redhat.com To: "Fedora Java Development List" java-devel@lists.fedoraproject.org Sent: Thursday, July 18, 2013 8:46:42 AM Subject: [fedora-java] Maven upgrade to version 3.1.0
Version 3.1.0 of Apache Maven was recently released. It is a long-awaited release which brings numerous new features and fixes many bugs. A full list is available in Maven 3.1.0 release notes [1].
I think it's important for Fedora to switch to new Maven as soon as possible. Unfortunately there are signifficant incompatibilities between Maven 3.1.0 and 3.0.5 which make this process non-trivial.
Maven 3.1.0 switched from Sonatype Aether to Eclipse Aether and from Sonatype Sisu to Eclipse Sisu. Plugins that directly depend on Aether or Sisu may no longer work with Maven 3.1.0. Upstream lists [2] some plugins that were or need to be updated to work with Maven 3.1.0.
I have created a tracker bug [3] which is intended to lists tasks needed to be done in order to migrate to Maven 3.1.0 as well as any bugs related to the migration. I have populated the tracker with all changes needed that I am aware of at the moment, but feel free to add more bugs if you find them.
This is fairly complicated process as there are circular package dependencies because of which several packages need to be updated at the same time. I will ask release engineering to create a dedicated Koji tag in order not to break rawhide during the process.
Mikolaj, Thanks for taking the lead to make this happen. It is highly appreciated.
Alexander Kurtakov Red Hat Eclipse team
[1] http://maven.apache.org/docs/3.1.0/release-notes.html [2] http://cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFound [3] http://bugzilla.redhat.com/985674
-- Mikolaj Izdebski Software Engineer, Red Hat IRC: mizdebsk -- java-devel mailing list java-devel@lists.fedoraproject.org https://admin.fedoraproject.org/mailman/listinfo/java-devel
On 07/18/2013 02:24 AM, Aleksandar Kurtakov wrote:
----- Original Message -----
From: "Mikolaj Izdebski" mizdebsk@redhat.com To: "Fedora Java Development List" java-devel@lists.fedoraproject.org Sent: Thursday, July 18, 2013 8:46:42 AM Subject: [fedora-java] Maven upgrade to version 3.1.0
Maven 3.1.0 switched from Sonatype Aether to Eclipse Aether and from Sonatype Sisu to Eclipse Sisu. Plugins that directly depend on Aether or Sisu may no longer work with Maven 3.1.0. Upstream lists [2] some plugins that were or need to be updated to work with Maven 3.1.0.
The actual packaging of eclipse-aether itself is easy. I have already done this internally about two months ago in order to build maven-dependency-tree and all the last maven plugins.
If you're worried about the list for here, http://cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFound, I don't think that most of these have an actual dependency on eclipse-aether. I would just try to build these first, if you haven't already.
These upgrades are not circular upstream and don't depend on eclipse-aether. It's not as if eclipse-aether is an actual drop in replacement for aether. I am not sure I follow you as to why you just wait for upstream on this.
Anyway, after writing all this, I think I understand why you called it circular if you are actually trying to get rid of sonatype at the same time you do the upgrades.
This is fairly complicated process as there are circular package dependencies because of which several packages need to be updated at the same time. I will ask release engineering to create a dedicated Koji tag in order not to break rawhide during the process.
Certainly the new dependencies on tycho are other eclipse things are absolutely awful. It's even more ironic that maven 3.1.0 has a dependency on tycho when you have bug #985678 which claims that it does not even work with it.
The components sisu-inject and sisu-plexus are really a pain and some use the type eclipse-plugin, which requires what component exactly (i can't recall right now)? I wonder if it can be switched back to jar and still work.
One other thing to note: they can't seem to agree on which guice to use. There are dependencies on both google-guice and sisu-guice from sonatype.
On 07/21/2013 07:28 AM, David Walluck wrote:
On 07/18/2013 02:24 AM, Aleksandar Kurtakov wrote:
----- Original Message -----
Maven 3.1.0 switched from Sonatype Aether to Eclipse Aether and from Sonatype Sisu to Eclipse Sisu. Plugins that directly depend on Aether or Sisu may no longer work with Maven 3.1.0. Upstream lists [2] some plugins that were or need to be updated to work with Maven 3.1.0.
The actual packaging of eclipse-aether itself is easy. I have already done this internally about two months ago in order to build maven-dependency-tree and all the last maven plugins.
I have already done that too. The results are in Fedora git, experimental branch. Eclipse Aether is not yet in rawhide, but that is planned soon.
If you're worried about the list for here, http://cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFound, I don't think that most of these have an actual dependency on eclipse-aether. I would just try to build these first, if you haven't already.
I think that older versions of these plugins depend on Sonatype Aether, while the latest versions use Eclipse Aether. Updating them should be fairly easy.
These upgrades are not circular upstream and don't depend on eclipse-aether. It's not as if eclipse-aether is an actual drop in replacement for aether. I am not sure I follow you as to why you just wait for upstream on this.
Anyway, after writing all this, I think I understand why you called it circular if you are actually trying to get rid of sonatype at the same time you do the upgrades.
Exactly. I can't just update aether package from Sonatype to Eclipse -- two aether versions are needed at the same time. To build Maven 3.1.0 you need Maven 3.0.5, which uses Sonatype Aether, and Eclipse Aether, which is a direct dependency of Maven.
And strictly speaking there are build-dependency cycles -- maven requires itself, maven requires aether, aether requires maven. There are others too, involving plugins affected by Macvn 3.1.0 update. For example maven requires maven-dependency-plugin, which requires maven.
This is fairly complicated process as there are circular package dependencies because of which several packages need to be updated at the same time. I will ask release engineering to create a dedicated Koji tag in order not to break rawhide during the process.
Certainly the new dependencies on tycho are other eclipse things are absolutely awful. It's even more ironic that maven 3.1.0 has a dependency on tycho when you have bug #985678 which claims that it does not even work with it.
I don't think Maven has dependency on Tycho. I would certainly hope it doesn't.
Bug #985678 is about Tycho not working with Maven 3.1.0. Maven broke it's internal API in 3.1.0 as some methods started using org.eclipse.aether.* classes instead of org.sonatype.aether.* and I believe that's the reason for Maven extensions, like Tycho or XMvn, not working with 3.1.0.
The components sisu-inject and sisu-plexus are really a pain and some use the type eclipse-plugin, which requires what component exactly (i can't recall right now)? I wonder if it can be switched back to jar and still work.
I didn't know that, but what would indeed be a very bad thing as it means that in order to build Maven (with all dependencies) you would need to have full Eclipse, which currently starts using Maven to build.
One other thing to note: they can't seem to agree on which guice to use. There are dependencies on both google-guice and sisu-guice from sonatype.
Where is Google Guice used? I guess at Eclipse side only. Maven used Sisu Guice since I remember.
On 07/22/2013 01:01 AM, Mikolaj Izdebski wrote:
I think that older versions of these plugins depend on Sonatype Aether, while the latest versions use Eclipse Aether. Updating them should be fairly easy.
The only one that I noticed requiring eclipse-aether was maven-dependency-plugin. That is why I did not quite follow that list. I did not have trouble upgrading to the latest maven plugins using maven 3.0.5. But, I could be remembering something incorrectly.
Since the package names are different, you can keep both versions of aether around for the time being in order to avoid the circular dependency until the very end when maven 3.0.5 itself is upgraded.
I didn't know that, but what would indeed be a very bad thing as it means that in order to build Maven (with all dependencies) you would need to have full Eclipse, which currently starts using Maven to build.
Tycho is a dependency of sisu-inject/sisu-plexus, one of which is a direct dependency of maven 3.1.0. I do not understand why upstream never seems to care about introducing so many dependencies like this, especially in a supposedly minor update.
Where is Google Guice used? I guess at Eclipse side only. Maven used Sisu Guice since I remember.
I forget which, but one of sisu-inject/sisu-plexus has a dependency on google-guice 3.0, and the other on sisu-guice. You are correct that maven itself uses sisu-guice and I would assume that the dependency on google-guice is may be an oversight. It should not be difficult to get everything using a single version of sisu-guice if you wish. Again, upstream does not seem to have anyone worrying about these sorts of issues.
Maven 3.1.0 is available in rawhide now.
Maven itself with most commonly used plugins should be working. Some other plugins may need updating or patching to support new Maven (Aether/Sisu). The Maven 3.1.0 tracker bug I mentioned before lists all problems known to me. If there are any others, please report bugs.
Temporarily two versions of Aether are still available -- Sonatype Aether and Eclipse Aether, but Sonatype Aether will be removed soon (before the end of the week). Please update your packages to use Eclipse Aether.
java-devel@lists.fedoraproject.org