-
Notifications
You must be signed in to change notification settings - Fork 16
Team Setup
Since bld doesn't automatically resolve and download all dependencies for
every command, it's possible for the jar files in your lib directories to grow
stale if you forget to run bld download purge when someone else changes the
build file.
If you set autoDownloadPurge to true in your project, bld will automatically
create a fingerprint of your dependency configuration. Whenever a change is detected
to your dependencies, bld will run the download and purge commands before any
other commands, then update the fingerprint.
This is a convenient way to automatically keep all your libraries in sync with your project dependencies, but any jar files that you put in your lib directories will be forcibly removed and each change to your dependencies (even repository changes), will trigger a download at the next build.
Another solution is to use git hooks to automatically run this command upon update.
Below is how I've set this up for the projects with my team.
The post-merge git stage will always be triggered after you pulled in changes,
even if there's nothing to merge. Usually you'd create the post-merge file
in your .git/hooks directory, but that is only local and will not be shared
with your team members.
I create the file in hooks/post-merge, this is what it looks like:
#!/bin/sh
cd "$(git rev-parse --show-toplevel)"
./bld download purge
exit $?Since bld can run any Java logic, you can use it to ensure that a symbolic link
to the hooks/post-merge file is created in a user's local .git directory.
For instance:
public class MyAppBuild extends WebProject {
public MyAppBuild() {
// ...
ensurePostMergeHook();
}
void ensurePostMergeHook() {
try {
var link = Path.of(workDirectory().getPath(), ".git", "hooks", "post-merge");
var target = Path.of(workDirectory().getPath(), "hooks", "post-merge");
if (!Files.exists(link)) {
Files.createSymbolicLink(link, target);
}
} catch (IOException e) {
System.err.println("ERROR: Unable to create the symbolic link for a Git post-merge hook.\n" + ExceptionUtils.getExceptionStackTrace(e));
}
}
public static void main(String[] args) {
new MyAppBuild().start(args);
}
}That's it! The next time your team members perform the project's build, the symbolic link will be created and from then onwards, the dependency jar files will always be kept in sync.
Next learn more about Sensitive and Common Data