50. Compile and unit test
DEV
Package and deploy
QA
PROD
Acceptance tests
Deploy to QA
Deploy to PROD
51. Compile and unit test
DEV
Package and deploy
QA
PROD
Acceptance tests
Deploy to QA
Deploy to PROD
Each commit is a potential release
52. Compile and unit test
DEV
Package and deploy
QA
PROD
Acceptance tests
Deploy to QA
Deploy to PROD
We reuse the same binaries
53. Compile and unit test
DEV
Package and deploy
QA
PROD
Acceptance tests
Deploy to QA
Deploy to PROD
Automated tests give us confidence in our build
Acceptance tests
54. Compile and unit test
Package and deploy
Acceptance tests
Deploy to QA
Deploy to PROD
Automated, repeatable
deployments
DEV
QA
PROD
Automated, repeatable
deployments
Automated, repeatable
deployments
57. The Maven lifecycle
Compile and unit test mvn test compile
test-compile
test
Integration tests mvn verify compile
test-compile
test
package
integration-test
verify
58. The Maven lifecycle
Compile and unit test mvn test compiletest-compiletest
Integration tests mvn verify
compiletest-compiletestpackageintegration-testverify
Deploy to repository mvn deploy
compile
test-compile
test
package
integration-test
verify
deploy
59. The Maven Release Process
1.0.0-SNAPSHOT
1.0.0-SNAPSHOT
1.0.0
mvn release
60. The Maven Release Process
mvn release:prepare
• Check that there are no uncommitted changes in the sources
• Check that there are no SNAPSHOT dependencies
• Change the version in the POMs from x-SNAPSHOT to a new version (you
will be prompted for the versions to use)
• Transform the SCM information in the POM to include the final destination
of the tag
• Run the project tests against the modified POMs to confirm everything is in
working order
• Commit the modified POMs
• Tag the code in the SCM with a version name (this will be prompted for)
• Bump the version in the POMs to a new value y-SNAPSHOT (these values
will also be prompted for)
• Commit the modified POMs
61. The Maven Release Process
mvn release:perform
1.0.0
compile
test-compile
test
package
integration-test
verify
install
deploy
1.0.0
62. Maven: You build a new release when
a snapshot build is good enough
Continuous Delivery: Any
build is a potential release
The Maven Release Process