Hi,

this days I stop my CI work due to some things. I was doing at the same
time needed work for a client in implementing Jewel DataGrid and ButtonBar.
I'm progressing in those components and hope to contribute soon as they are
ok in API terms and looking  good.

Btw, Chris Dutz was helping me on CI but he was thinking that most of our
complexity could gone if we have just one repo with submodules. He's
working on that doing some refactoring that hopefully can be contributed
soon.

In doing that we'll get building with just one "mvn install", while we can
continue building each submodule as we do now. That will mean to request an
"apache-royale" repository.

Beign said that the technical tasks are:

   - Split up the royale-maven-plugin into 3 modules:
      - the maven plugin (released separately together with the api/model),
      - a plugin api/model and
      - a compiler implementation (released with the project)
   - Add a “provided” dependency to the compiler implementation to every
   js/swf module (will to that by adding a global dependency in the root)
   - Add the 4th git repo which includes the 3 parts as submodules and also
   contains a pom.xml which adds the 3 modules to the reactor

The maven plugin is a super basic plugin, that does nothing else than look
for an implementation of a compiler on the classpath and to relay to that.
Therefore it should be possible to release this once and not for every
release.


With this generally all modules can be built in one execution of “mvn
install” or "mvnw install" (if user does not have maven already installed)
in the new root pom level.


The general trick is that the maven plugin doesn’t have a fixed dependency
on the compiler, it loads the compiler implementation at runtime from the
project’s dependencies.

This dependency was what was preventing us from building (and especially
releasing) all 3 together:

   - Maven builds a reactor first for that it resolves the plugins and
   their dependency
   - As the plugin currently is part of the build of the typedefs and the
   framework when doing a release this plugin does not yet exist and the build
   will fail.
   - With this change the plugin and all of its dependencies (none) are
   resolvable and we’re able to build and release.



The only reason we will not be able to release the triple-project is that
the release prepare goal can’t handle these sub-modules.



However if all modules were really merged into one … that would absolutely
be possible.



Chris also noticed that the Ant compiler configs changed quite a bit and am
currently cleaning up in the different compiler mojos. For every type of
compilation we’ll have 2 config templates: a js version and a swf version.


So I want first to share this work here to start giving exposure (Chris
hopefully will have it in the next few days, while I end with Jewel
components).

I think it will be another good improvement to continue simplification if
nobody objects nothing to it. That will mean that CI will benefit from
that simplification as well the release process, so better for me to save
that work hours for this new enhancement, instead of doing that work now
and rework again in few days.


Let me know what you think all about it


Thanks!




-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to