' IMO, it sounds very disruptive to try to collapse 3 repos into 1. ' I did not interpret it that way, at least not for now anyway. It sounds like just making a 'light' repo that has the existing repos as git submodules. That to me actually sounds like an easy way to handle more (than 3) repos if it is necessary. But maybe I missed something in my understanding...
On Wed, Dec 4, 2019 at 6:20 AM Alex Harui <[email protected]> wrote: > 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" <[email protected]> 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&data=02%7C01%7Caharui%40adobe.com%7C281f1a35e3eb48a14d1308d77806def0%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637109843213823318&sdata=FGNNYW%2FAdVubDtIu2CU5DSlkx%2B3TKe4n18aE4NMJy%2F4%3D&reserved=0 > > >
