-
Notifications
You must be signed in to change notification settings - Fork 13
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
Support generating {sbt,mill,gradle,Maven} builds #59
Comments
I thought about this too. A problem is that Seed modules do not map well onto sbt. The resulting build file will not be idiomatic and use The following use cases come to my mind:
We are best served with tackling those limitations directly in Bloop/Seed. However, if someone wants to contribute additional generators, I am happy to provide some pointers. |
I think we can work around these limitations in a nice way, generating idiomatic builds sounds more daunting than it actually is. Plus, it doesn't need to be perfect -- there is room for error and we could require user intervention. The generation just has to be good enough so that people consider it to migrate instead of doing everything from scratch.
IMO it will be useful to serve as a building block for the migration.
Maybe, yeah. You could add support for publishing libraries through However, the point to generate to other build files holds even if you fix these limitations. If this feature was supported, I'm pretty sure I could sell |
These are good arguments. Thanks for mentioning Coursier's I can look into basic sbt support once some other more pressing issues have been resolved. |
Sounds good to me! I cannot help with implementation but have too much experience with sbt, let me know if you have any questions on the generating idiomatic sbt builds part of the job. I'm really excited about this, this is IMO a game changer 😄 |
Sure, I will keep you in the loop. Thanks. |
Technically I think it's possible to have an sbt plugin that generates the sbt projects and their configuration by reading a Seed file, rather than code-generating it. That doesn't solve all the problems in issue though. |
I'm not sure I like this idea. It seems to me like seed would become a stepping-stone to other build tools, when it is actually a competent build tool in its own right—I assume Mill "suffered" the same at some point, and probably Fury too. If a migration from seed to whatever is desirable I feel that this should be implemented on the SBT/Mill side rather than included in seed itself. That way, the evolution of seed doesn't get tied to the evolution of other build tools. |
Imagine I was to use
seed
to teach Scala to beginners. I'd pickseed
because it's so simple that I can explain how to declare a module and add a dependency in less than a paragraph. It imposes almost no overhead when teaching Scala to a crowd of developers inexperienced with the Scala build tool ecosystem and allows them to focus on what's important: learning the language.However, a big drawback of doing this is that they would have learned to use a build tool that's perhaps really simple for future use cases and doesn't have major adoption in the community. I believe this is an important point.
To address that concern, I suggest
seed
can use generate valid build files out of its build schema. Given its simplicity,seed
s format is a subset of the project settings in all the other build tools and making that generation is relatively straight-forward.I'd suggest supporting
sbt
andmill
at the beginning and then adding support for Gradle/Maven if there's demand. The great thing about this is that people can get started withseed
but if they need unsupported features such as packaging/releasing they can generate a valid sbt/mill build out of it and continue with their lives.The text was updated successfully, but these errors were encountered: