Version2 #42

Merged
merged 12 commits into from Oct 31, 2011

Projects

None yet

3 participants

@justinjmoses

Hey team,

So here's a working POM for RL2. There is some back and forth with Sonatype before we get it in Maven Central, but it's a start.

Notes:

  1. Lengthy install script:

Unfortunately, as it is a Flash project (rather than Java), most of the dependencies are not hosted, meaning there's an runonce install script for each user before they can build. Maven requires all dependencies be hosted somewhere. It's not like Ant where you can just say - use every SWC in this folder. The install script simply installs all the libs into the user's local repository.

  1. Regular updates to dependencies

As such, it means that the POM will have to be updated if any dependency is added or an existing one changes.

  1. Version numbers

As the project is in flux, it is suffixed as SNAPSHOT. I've removed the "v" prefix and added a dash (v2.0.0b1 = 2.0.0-b1) to conform with Maven versioning.

  1. Releases

As builds are released, the SNAPSHOT should come off and deployments pushed to Maven Central.

  1. Developers and roles

Please feel free to add info to the developer/contributor section as you see fit.


Going forward I'm happy to keep the POM up to date, and perform releases. If you'd like me to be in charge of this, please let me know. If that's the case, it would be great if I could be notified me changes occur to any of the libs or to the Ant build, and indeed whenever a release is due to go out.

-- Justin

@darscan
Robotlegs member

Awesome, thanks so much Justin!

@darscan darscan merged commit 648eb9f into robotlegs:version2 Oct 31, 2011
@devboy

Hi Justin,

thanks!

Me and Shaun just started working on this yesterday. We are using buildr instead of maven.
Buildr can also release to maven repositories(http://devboy.org:8081/nexus/content/repositories/artifacts/org/robotlegs/robotlegs-framework/2.0.0b1/),
so you will be able to require the artifact for your maven projects.

I am just setting up a fresh install of nexus on my server, but would like to know more about what steps we need to take to get RL2 onto maven-central!
With buildr we can work around the dependency issues and just bundle them inside the swc instead of hosting all RL2 dependencies in a maven repo.

@justinjmoses

The previous Maven developer opened this JIRA ticket: https://issues.sonatype.org/browse/OSSRH-288

it's what you need to get started. i believe all we need to do is create a jira account for sonatype, ensure everything is still cool, then we can deploy. There is a process to deployment, but it's not that tricky. Is this something you want to manage? If not I'm happy to.

i've not used buildr, but i think you might be confusing the issue when talking about bundling the swc deps.

In order to build Robotlegs from source - which is what the POM is for - you need to supply dependencies, and Maven needs to find them somehow. The options are:

  • Host the dependencies on Maven Central, meaning each dep needs their own build script and open source location. Flexunit is getting there and I'm helping Till getting this up with SS but there are still others.

  • Host the dependencies on an external nexus that the Robotlegs team control. This is obviously not optimal because of the cost and effort maintaining a remote repository.

  • Do not host the dependencies at all, and ensure that developers know to install the deps locally before trying to build from source.

Incidentally, Flexmojos has this problem as well. While Flexmojos is hosted on Maven Central, none of the Flex artifacts are (ie. the compiler and SDKs). Marvin (FM creator) uploads the Flash deps to a branch on Sonatype every time a new SDK is released - hence why we need the settings.xml to reference the "flexgroup" on Sonatype.

Hopefully one day soon Adobe will host their own Nexus repo and this situation will be resolved. =)

@devboy

Looks like we just need to get approval for a deploy account by Sonatype, right?

I know the problems/options with maven, worked for too long with maven and flex-mojos.

We can use buildr to build from source and it's possible to resolve dependencies from maven and the filesystem,
that way we can use it right now without any extra work, and it will still be fine when (one day) all dependencies are hosted publicly somewhere.

I don't see any extra value we would gain from using maven right now.

@devboy

That last sentence was a bit harsh, I just dislike Maven with a passion :)
I am really thankful you are working on the maven bits and there's no reason they can't live next to each other.

Btw: heres the current buildfile for RL2 -> https://github.com/robotlegs/robotlegs-framework/blob/version2/buildfile

@justinjmoses

Approval by Sonatype, yes. Whoever deploys should put their credentials into their local settings.xml and then run mvn deploy when a release is ready (removing the SNAPSHOT obv).

i understand your dislike of Maven. i just offered to the team because I was recently working with them and thought they could use the help getting Maven Central deployment. As you know, quite a lot of enterprise devs use Maven and it would be handy to have frameworks hosted on Maven Central. I'm not trying to step on anybody's toes =) If you're happy to manage the POM as part of the build process, then great! Just let me know if i can help.

Honestly, i've only just now taken a look at buildr-as3. At first glance it looks promising. I'm not much of a Ruby guy, but am always interested in different ways to simplify the situation.

@devboy

You're not stepping on my feet, no worries.

If there is a demand to deploy robotlegs to maven, we should make that happen!
We can do that with maven or buildr.

We probably need to find a driving system that is used by the team, and update the others accordingly.
Also we cannot get rid of ANT as it is the most common build-system in the flash world.

Which means we need to support 3 build-systems, which is not an ideal situation.

@devboy

Yesterday night I commited some updates to the buildr buildfile which will allow it to publish to my maven repo at artifacts.devboy.org (might look empty, but artifacts can be fetched from there. check also: nexus.devboy.org ).
I have two repositories available there, one for snapshot builds at snapshot.artifacts.devboy.org,
and one for release builds at release.artifacts.devboy.org.

Right now you can release to snapshot by calling:

buildr upload ruser=username rpass=password

Just ask me for the password.

Heres one build from yesterday: http://46.163.116.97:8081/nexus/content/repositories/snaphot.artifacts/org/robotlegs/robotlegs-framework/2.0.0b1-SNAPSHOT/

@devboy

Jason, can you point me to the mvn-repo where flexunit is hosted?

@justinjmoses

Jason? You mean Justin?

The only real location for Flexunit at the moment is sonatype, on the Flexgroup branch that Marvin added. The latest version on there is 4.0-RC1. https://repository.sonatype.org/index.html#nexus-search;quick~flexunit

I'm in talks with Mike and Sim to help them out with a POM on Flexunit, and hopefully get it up onto Maven Central before too long...

@devboy

That would be awesome, if you want to host at my repo (if maven central is not possible for some reason) I will gladly give you a deploy key.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment