1 # http://www.gnu.org/software/make/manual/make.html
2 # https://www.gnu.org/prep/standards/html_node/Makefile-Basics.html#Makefile-Basics
3 # http://clarkgrubb.com/makefile-style-guide
8 MAKEFLAGS
+= --warn-undefined-variables
10 .SHELLFLAGS
:= -eu
-o pipefail
-c
15 ######################
16 # INTERNAL VARIABLES #
17 ######################
18 timestamp
:= $(shell /bin
/date
"+%Y.%m.%d-%H%M%S")
28 GREEN
:= $(shell tput
-Txterm setaf
2)
29 WHITE
:= $(shell tput
-Txterm setaf
7)
30 YELLOW
:= $(shell tput
-Txterm setaf
3)
31 RESET
:= $(shell tput
-Txterm sgr0
)
33 # Add the following 'help' target to your Makefile
34 # And add help text after each target name starting with '\#\#'
35 # A category can be added with @category
38 while
(<>) { push @
{$$help{$$2 // 'targets'}}, [$$1, $$3] if
/^
([a-zA-Z\
-]+)\s
*:.
*\
#\#(?:@([a-zA-Z\-]+))?\s(.*)$$/ }; \
39 print "usage: make [target]\n\n"; \
40 for
(sort keys
%help
) { \
41 print "${WHITE}$$_:${RESET}\n"; \
42 for
(@
{$$help{$$_}}) { \
43 $$sep = " " x
(32 - length
$$_->[0]); \
44 print " ${YELLOW}$$_->[0]${RESET}$$sep${GREEN}$$_->[1]${RESET}\n"; \
48 help
: ##@other Show this help
49 @perl
-e
'$(HELP_FUN)' $(MAKEFILE_LIST
)
51 .PHONY
: display-dependency-updates
52 display-dependency-updates
: ##@maintenance Display dependency updates in 'maven-boms'
53 @mvn versions
:display-dependency-updates
-U
-pl maven-boms
-amd
55 .PHONY
: display-plugin-updates
56 display-plugin-updates
: ##@maintenance Display plugin updates in 'maven-parents'
57 @mvn versions
:display-plugin-updates
-U
-pl maven-parents
-amd
59 .PHONY
: display-property-updates
60 display-property-updates
: ##@maintenance Display property updates in all modules
61 @mvn versions
:display-property-updates
-U
63 .PHONY
: sonar-analysis
64 sonar-analysis
: ##@maintenance Performs Sonarqube analysis
65 # http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner+for+Maven
67 @mvn sonar
:sonar
-Dsonar.host.url
=http
://localhost
:59000
70 sign-waiver
: ##@one-time Signs the WAIVER
71 @gpg2
--no-version
--armor
--sign AUTHORS
/WAIVER
73 .PHONY
: release-into-local-nexus
74 release-into-local-nexus
: ##@release Releases all artifacts into a local nexus
75 mvn versions
:set
-DnewVersion
=$(timestamp
) -DgenerateBackupPoms
=false
76 mvn
clean deploy scm
:tag
-Dtag
=maven-build-process-
$(timestamp
) -DpushChanges
=false
-DskipLocalStaging
=true
-Drelease
=local
77 -mvn versions
:set
-DnewVersion
=0.0.0-SNAPSHOT
-DgenerateBackupPoms
=false
79 .PHONY
: release-into-sonatype-nexus
80 release-into-sonatype-nexus
: ##@release Releases all artifacts into Maven Central (through Sonatype OSSRH)
81 mvn versions
:set
-DnewVersion
=$(timestamp
) -DgenerateBackupPoms
=false
82 mvn
clean gpg
:sign deploy scm
:tag
-Dtag
=maven-build-process-
$(timestamp
) -DpushChanges
=false
-Drelease
=sonatype
83 git push
--tags origin master
84 -mvn versions
:set
-DnewVersion
=0.0.0-SNAPSHOT
-DgenerateBackupPoms
=false