Archive

Author Archive for Jason van Zyl

Aether questions answered for JAX

August 9th, 2010 By Jason van Zyl

JAX asked me some questions about Aether so I’m providing the the English version of the answers here for the community. The German version should show up on the JAX site shortly.

Can you give us an introduction to Aether?

Aether is a library for interacting with artifact repositories. This involves the specification of local repository formats, remote repository formats, workspaces, transports, and artifact resolution. People are generally familiar with repositories whether they be local or remote. Workspaces are additional sources where artifacts can be resolved from. Workspaces can be used in IDEs to provide resolution of projects you are working on, in shells like the Maven Shell or Roo, or any other long-lived process where a developer needs to resolve against in-development projects. I think people are familiar with various transports but HTTP is by far the dominant transport used with artifact repositories, but Aether lets you define additional ones if you need to. Along with all the rules to resolve artifacts taking into consideration any transformations, relocations, and conflict resolution strategies you might need to employ. We also plan to allow Aether to define version schemes, but the first work was just started on this by Alin Dreghiciu.

It is very important to note that Aether has no dependencies on Maven. When I said Aether is a library for interacting with artifact repositories, I didn’t mean Maven artifact repositories. Aether is a general purpose library for interacting with artifact repositories. If you wanted to specify your dependency metadata in a properties files Aether will let you do that. If you want to store your artifacts in a database Aether will let you do that. But, of course, we needed Aether to work for Maven so we created an implementation of what we call an ArtifactDescriptorReader to process Maven POMs. That implementation lives in the Maven codebase and that’s how we make Aether work for Maven.

Read more…

 

Aether, Community, Maven , ,

Introducing Aether: Embeddable Maven Repository API

August 3rd, 2010 By Jason van Zyl

Introducing Aether

Aether (pronounced ē’thər, as in flying though the ether) aims to be the standard library for interacting with Maven repositories. Without question, the most important aspect of the Maven ecosystem is interoperability at the repository level. There are many emerging options in the build space for JVM-based languages, but the one thing they all have in common is their interaction with Maven repositories. It’s clear that Maven repositories play a critical role within JVM-based development infrastructures and Aether will provide the necessary interoperability, through a common set of tools and APIs, that’s critical for happy users in the ecosystem.

Aether & Maven 3.x

Benjamin Bentmann, Sonatype’s lead on Maven 3.x, has fully integrated Aether back into Maven 3.x. Though Aether is an extraction from Maven, Aether is not Maven specific. That said Maven 3.x and Maven repositories are our first priorities. The upshot is that if you embed Aether, you will be embedding the same library that Maven 3.x uses when it interacts with a Maven repository. If compatibility with Maven repositories is important for your project then it’s not going to get any better than Aether.

Aether & Mercury

Mercury was our first attempt at extracting a Repository API from Maven and that didn’t work. We bit off more then we could chew, and so our first attempt was a learning experience. We attempted to integrate the excellent SAT4J library but didn’t have enough experience to pull that off. In addition there may be features of SAT4J Maven requires that are not present yet. As such, we felt it better to attempt something less ambitious, yet functional, and invest in research for future improvements.

Aether, p2 & SAT4J

As part that investment, we will be collaborating in sponsored research with Daniel Le Berre, who is the author of SAT4J. Daniel is a tenured professor at University of Lens, and researcher at Centre de Recherche en Informatique de Lens and is affiliated with Centre National de la Recherche Scientifique. His work will not only help us with p2, but also with many things we want to accomplish in Maven. We see a lot of overlap in the work Sonatype is doing on Maven and p2 and ultimately we really see there being one artifact resolving framework.

Aether & Ant

Rest assured there will be excellent Aether Ant Tasks. Making sure that Aether works flawlessly inside Maven 3.x is our first priority, but we are committed to making a set of excellent Aether Ant Tasks. If you’re interested in Aether Ant Tasks you can follow the progress here.

Aether Resources

If you are interested in Aether here are the goods:

P.S. Thanks to Pierre-A Grégoire for the name Aether!

 

Aether, Maven, Nexus , , ,

EclipseMagazine Interview with Jason van Zyl on the Maven Ecosystem

March 29th, 2010 By Jason van Zyl

Recently, I was asked to do an interview for EclipseMagazine about the future of Maven and release of Maven 3.0.  JAXenter published part one and two of the interview over two weeks.  Below is the full interview, which covers everything from changes Maven 2 users can expect when migrating to Maven 3, Nexus repository manager, the Maven Shell, Polyglot Maven, and more.

With the switch from Maven 1.x to 2, developers had to manage some fundamental changes. What challenges can users expect when migrating from Maven 2 to Maven 3?

We are planning that, in most cases, Maven 3.0 will be a drop-in replacement for Maven 2.x. We have gone to great lengths to ensure backward compatibility while reimplementing a good portion of Maven’s internals. From the command-line perspective we are trying to be fully compatible. Maven 3.0 will not allow duplicate dependency or plugin declarations, so those problems would need to be fixed, but aside from that no changes to your POMs will be required. In all other regards we have created backward compatibility layers to protect users from the many internal API changes that we have made. I really hope that the Maven community can move forward to Maven 3.0 without grief, and use the new features as it is convenient for them.

Is there anything users should keep in mind when creating a new project, to be prepared for Maven 3?

It honestly shouldn’t be any different from Maven 2.0. That’s the intended goal. So much has changed under the covers that we didn’t want to change the POM format. The primary goal is a path forward for all Maven users, efficient embedding, increased performance, synchronizing the Maven 3.0 code base with m2eclipse, and adding extension points for tools like Tycho, Polyglot Maven, and the Maven Shell.

Read more…

 

Maven, Sonatype , , , , , , , ,

Sonatype Demo Tuesday @ EclipseCon in the Camino room

March 23rd, 2010 By Jason van Zyl

Sonatype is a gold sponsor at EclipseCon so we have a room for the day to some extra presentations and demos. If you’re at EclipseCon and you’re interested in Maven, M2Eclipse, Nexus, or Tycho then please come to the Camino room on the second floor!

10:00am: Developing with Maven 3.0 and M2Eclipse 1.0

A discussion of the changes that have been made in Maven 3.0 to better support interoperation with Eclipse, the roadmap toward the 1.0 release, and an overview of the current features. We will also be talking about Maven Studio for Eclipse, Sonatype’s new Maven-focused Eclipse IDE.

11:00am: Managing p2 Repositories and Repository Interoperability with Nexus Professional

A discussion of how Sonatype is trying to simplify the management of P2 repositories with Nexus.

1:00pm: Tycho Workshop & Demo Extravaganza!

Anyone who is interested in an alternative to PDEBuild, Buckminster, or Athena. Tycho is a set of Maven 3.0 plugins which make up the next generation headless build solution for Eclipse-based products and OSGi bundles. This will hands on workshop where we will provide demonstrations and help you convert your build to Tycho!

See you there!

 

Community, Maven, Nexus, m2eclipse

“Maven 3: Reloaded” Presentation from Devoxx ‘09

February 26th, 2010 By Jason van Zyl

Parleys.com has just published my “Maven 3: Reloaded” presentation from Devoxx ‘09. In this presentation, I put our current focus on Maven 3 in context and talk about some of the upcoming technologies like Polyglot Maven and Maven Shell. In this video you’ll see me demonstrate POM translation from XML to Groovy, discuss the ways in which Maven 3 changes allow m2eclipse to embed Maven, and some of the work we’ve done in Tycho to provide a path for OSGi developers.

You watch this embedded video, or watch the presentation over on the Parleys.com site.

Note: To switch between the slides and the video of me talking, click on the smaller video in the upper right-hand of this video embed.

 

Sonatype , , , ,