-
Notifications
You must be signed in to change notification settings - Fork 467
Reorganize _ext projects #483
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Here's what I see as options Option 2 - Composite build. The _ext folder is treated as it's own Gradle build and conditionally included as a composite in the root project. Task naming would be important (collisions) and dependencies within the root projects could be slightly more complex, but, it could streamline _ext development while maintaining the root project's independence for 'regular' development. Option 3 - _ext folder remains, but treated as an independent Gradle build from root. Will permit interproject dependencies within _ext. |
There are two kinds of project in You can tell which is which based on whether they have I love how you have broken out the options. With the p2 fat jar problem in mind, here are the consequences:
An important challenge in this is that the interproject dependencies won't really work unless the fat jar part is taken into account. When you open the In general, we can release a new version of the JDT formatter just by bumping versions in the lockfile. We only need to change To release cdt, groovy, or wtp, it is rare that we need to change the shim code, we just need to publish a new fat jar containing the new deps, and then update the lock files. So I think that the code in question is probably less-active than it seems at first. Regardless of how active this code is, the changes you suggest would definitely be a welcome improvement! |
I think p2 is shorthand for painful squared....we have fought similar issues and ended up creating a static mirror for a number of p2 repos aggregated for each release of eclipse which we host internally. I wouldn't mind taking a look at making p2 resolution lazy... I think you misunderstand what I meant with Option 1 - I am proposing that we remove the _ext folder from the Spotless repository and into a different (new), dedicated repository. |
Here's the code. The problem (last I checked) is that gradle doesn't have APIs for pluggable dependency resolution. Since you can't download these deps lazily, the repository has to be ready for gradle to resolve them during configuration if it wants to. Deep in the issue history, there are links to a fork of gradle that someone built and briefly maintained to allow lazy p2 resolution. Overall, eclipse is doing a good job moving more stuff to maven. All of JDT is now available on mavencentral, for example. I see p2 as a dead-end, and further investment in it is questionable, but up to you.
Yup, sorry, didn't read carefully enough. I know that @fvgh and I discussed splitting them into their own repo at one point and ultimately didn't do it, but I don't remember why. Whatever the reason was, it is a new problem now that we have to use a different old version of gradle to publish the I would prefer that Spotless remained a monorepo. It is a good candidate for a split, but I don't see a compelling need. Perhaps we could achieve most of the CI benefits with a modestly more complex CI script, something like (my bash-foo is terrible).
|
With that in mind, I'll put a PR together for approach 2 - it will likely use a simple flag in rev 1, we could enhance it down the road with a source control check. |
I took a stab at approach 2 + composite projects, but it created some issues WRT publishing. |
How is it going? I think this approach is working fairly well for maven, I was thinking about adding something similar to slurp the |
I provided a quick draft giving an idea what I have in mind. Basic goals:
Why not composite builds or a standalone project? Why not standalone repositories? |
Your branch LGTM! I only saw one typo. |
@nedtwigg Sorry, think we have a misunderstanding. Branch was just meant to give you a quick idea how the thing should look like. The branch is missing quite a bit:
Anyhow, the branch key figures should remain. Loss of duplicated code. |
I will finalize the branch during this week. There is much more that can be improved with the latest |
Fixed by #519 |
Apologies for the laggy response :-) In response to
Looks good to me, we do something similar in a few projects, but utilize properties to provide a simple/clean defaulting and override mechanism. We do it for both project inclusion, as well as plugin application (SonarQube and Jacoco come to mind). The rest is just experience with 6.0 - |
Ooh, thanks for pointing out the test_fixtures gizmo! That would let us subsume |
Reorganize the _ext projects as a Gradle multi-project build.
This will permit dependencies between the projects as well as potentially consolidating the version properties shared by projects.
The text was updated successfully, but these errors were encountered: