IMO, it sounds very disruptive to try to collapse 3 repos into 1.  Honestly, 
I'd rather we make sure our processes can handle more than 3 repos someday.  If 
the project grows, we may want to release things on different schedules.  IOW, 
I think we should be thinking about more smaller releases instead of one big 
one.  And doing more separation makes sure we don't accidentally create 
dependencies we don't want, like having the compiler generate a certain kind of 
output.

I am not a Maven expert, but my impression is that separating the utils out to 
a 4th repo would simply the process of building everything to a series of "mvn 
clean install" and we wouldn't have to deal with profiles.

Another place we use profiles is to cut down on build time by not bullding 
examples and distribution unless you ask for it.  We could move those profiles 
to their own repos if needed.

If Maven is lacking a scripting feature that makes it easier to pull down repos 
or source packages and build them in sequence, then that might be a plugin that 
Maven should add or we could add in yet another repo.

When we start doing "tricks" to make Maven build Royale, it means to me that we 
aren't really using Maven as intended.  Maven itself seems to be a project 
split across many repos.  We "should" be able to manage our code across many 
repos as well.

My 2 cents,
-Alex

On 12/3/19, 7:38 AM, "Carlos Rovira" <carlosrov...@apache.org> wrote:

    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
    
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7C281f1a35e3eb48a14d1308d77806def0%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637109843213823318&amp;sdata=FGNNYW%2FAdVubDtIu2CU5DSlkx%2B3TKe4n18aE4NMJy%2F4%3D&amp;reserved=0
    

Reply via email to