-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
49 lines (39 loc) · 1.77 KB
/
Makefile
File metadata and controls
49 lines (39 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
MVNCMD := mvn -B ${MVNARGS}
POSTRUN := rm -rf .testcontainers*
CLEANUP := rc=$$?; $(POSTRUN); exit $$rc
TAG := latest
# handle release args
ifeq (release,$(firstword $(MAKECMDGOALS)))
# use the rest as arguments for "release"
RELEASE_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
# ...and turn them into do-nothing targets
$(eval $(RELEASE_ARGS):;@:)
endif
all: compile
$(MVNCMD); $(CLEANUP)
compile: $(wildcard src/main/java/**/*.java)
$(MVNCMD) compile; $(CLEANUP)
test: $(wildcard src/test/java/**/*.java)
$(MVNCMD) test; $(CLEANUP)
jshell:
mvn compile com.github.johnpoth:jshell-maven-plugin:1.3:run
.PHONY: all compile test jshell clean release
clean:
$(MVNCMD) clean; $(CLEANUP)
release:
$(eval SHELL := /bin/bash)
git remote update
if git show-branch *master | grep -A 1 '^--$$' | grep -q remotes; then\
echo Your local repository is not up to date; exit 1;\
fi
$(eval CURRENT_VERSION := $(shell xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' pom.xml))
$(eval VERSION := $(if $(RELEASE_ARGS),$(RELEASE_ARGS),$(subst -SNAPSHOT,,$(CURRENT_VERSION))))
git flow release start "$(VERSION)"
perl -pi -e 's,<version>$(CURRENT_VERSION)</version>,<version>'"$(VERSION)"'</version>,' pom.xml
perl -pi -e 's,<version>[^<]+</version>,<version>'"$(VERSION)"'</version>,' README.md
git commit pom.xml README.md -m "bump release to $(VERSION)"
git flow release finish -m "release $(VERSION)" </dev/null
perl -pi -e 'BEGIN{sub bump{@v=split(/\./,$$_[0]);join(".",@v[0..1]).".".($$v[-1]+1);}}s,<version>($(VERSION))</version>,"<version>".(bump($$1))."-SNAPSHOT</version>",e' pom.xml
git commit pom.xml -m "develop back to snapshot mode"
push:
for remote in `git remote`; do git push $$remote --all && git push $$remote --tags; done