-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile
43 lines (35 loc) · 1.79 KB
/
Makefile
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
.PHONY: help clean build check-versions release-notes deploy
DATE=`date +'%F'`
NAME=`xmllint --xpath "//project/artifactId/text()" pom.xml`
VERSION=`xmllint --xpath "//project/version/text()" pom.xml`
PREVIOUS_TAG=`git tag | sort -r | head -n 1`
help:
@echo "Available targets for $(NAME):"
@echo "\thelp\t\t\tThis help"
@echo "\tclean\t\t\tDelete everything in ./target"
@echo "\tbuild\t\t\tCleans the project and rebuilds the code"
@echo "\tcheck-versions\t\tCheck if the versions of dependencies are up to date"
@echo "\trelease-notes\t\tCreate release notes for the latest version"
@echo "\tdeploy\t\t\tClean, build and deploy a version to Github and Maven Central"
clean:
@echo "[$(NAME)] Cleaning"
@mvn -Dorg.slf4j.simpleLogger.defaultLogLevel=warn clean
build:
@echo "[$(NAME)] Building"
@mvn -Dorg.slf4j.simpleLogger.defaultLogLevel=warn -DskipTests=true clean package
check-versions:
@mvn versions:display-dependency-updates -Dorg.slf4j.simpleLogger.defaultLogLevel=info
@mvn versions:display-plugin-updates -Dorg.slf4j.simpleLogger.defaultLogLevel=info
release-notes:
@echo "[$(NAME)] Writing release notes to src/docs/releases/release-$(VERSION).txt"
@echo "$(VERSION)" > src/docs/releases/release-$(VERSION).txt
@echo "" >> src/docs/releases/release-$(VERSION).txt
@git log --pretty="%s" $(PREVIOUS_TAG)... master >> src/docs/releases/release-$(VERSION).txt
deploy: build
@echo "[$(NAME)] Uploading to maven central"
@mvn clean deploy -P release
@echo "[$(NAME)] Creating github release"
@hub release create -a target/$(NAME)-$(VERSION).jar -a target/$(NAME)-$(VERSION)-javadoc.jar -a target/$(NAME)-$(VERSION)-sources.jar -F src/docs/releases/release-$(VERSION).txt $(NAME)-$(VERSION)
@echo "[$(NAME)] Tagging and pushing to github"
@git tag $(NAME)-$(VERSION)
@git push && git push --tags