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&data=02%7C01%7Caharui%40adobe.com%7C281f1a35e3eb48a14d1308d77806def0%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637109843213823318&sdata=FGNNYW%2FAdVubDtIu2CU5DSlkx%2B3TKe4n18aE4NMJy%2F4%3D&reserved=0