-
Notifications
You must be signed in to change notification settings - Fork 2
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
Design a unified target graph for projects and solutions #31
base: develop
Are you sure you want to change the base?
Conversation
Design and Target Graph not final — WIP
4acb747
to
3e0c041
Compare
e949db8
to
bfc790a
Compare
bfc790a
to
9b983cd
Compare
9b983cd
to
d1fe095
Compare
This is pretty neat, but I think it's less clear what the unified target graph means across various SDKs. I always thought the Maven way of thinking about this was a lot cleaner and better followed the principles of dependency inversion by declaring an interface in the form of a goal that the plug-in targets had to achieve. I think that also aligns closely with what the original "The Build Master" textbook on MSBuild advocated for. If you think broadly about "what do we really want that other ecosystems have" and "what we have today (via binlog replays)" you can see that the main gap is still in traceability of inputs, mostly around goal-directed values passed into black boxes for these targets vs the targets themselves. There's no way to "observe" what the black box does in generating outputs/task items. |
May be I should come up with better naming. That said, with the current MSBuild target graph, although extensible, they are not what I call a concept based or more accurately—action based graph. What I mean is, if you take a This is just one example of an action based target graph design, I'm experimenting with. Likewise, you'd have a similar pattern of thought for other concepts that exist in the Build System (
I personally don't like certain things about Maven, first is Java but that's subjective 😅. Then again, I have to say, when I was working on some java projects, Maven felt a lot cleaner, even though it was verbose, it had defined the language better. Once you know the language, the concepts, you can easily understand a
TRUE THAT. As you said
|
d1fe095
to
eeede52
Compare
eeede52
to
7c2adaf
Compare
Goals
Targets List:
Restore
Build
Clean
Rebuild
(wrapper aroundClean + Build
)Test
Run
Publish
NOTE: Design of the Target Graph is not final!