Maven - Maven Deployment Automation - maven tutorial




What is Deployment Automation in maven?

  • Automate the deployment process by combining. Maven, to build and release projects, SubVersion, source code repository, to manage source code, and Remote Repository Manager (Jfrog/Nexus) to manage project binaries.
  • learn maven tutorial - maven project - apache maven - project management tools - Apache Maven example programs

    learn maven tutorial - apache maven - maven project - apache maven project management tools - Apache Maven example programs

  • In project development, normally a deployment process consists of following steps
    • Check-in the code from all project in progress into the SVN or source code repository and tag it.
    • Download the complete source code from SVN.
    • Build the application.
    • Store the build output either WAR or EAR file to a common network location.
    • Get the file from network and deploy the file to the production site.
    • Updated the documentation with date and updated version number of the application.
maven tutorial tags : apache maven , maven repository , maven central

Problem Statement

  • There are normally multiple people involved in above mentioned deployment process.
  • One team may handles check-in of code, other may handle build and so on.
  • It is very likely that any step may get missed out due to manual efforts involved and owing to multi-team environment.
  • Example, older build may not be replaced on network machine and deployment team deployed the older build again.

Solution

  • Automate the deployment process by combining
    • Maven, to build and release projects,
    • SubVersion, source code repository, to manage source code,
    • and Remote Repository Manager (Jfrog/Nexus) to manage project binaries.

Update Project POM.xml

  • We'll be using Maven Release plug-in to create an automated release process.
  • For Example: bus-core-api project POM.xml

POM.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi="http://www.wikitechy.com/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>bus-core-api</groupId>
   <artifactId>bus-core-api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging> 
   <scm>
      <url>http://www.svn.com</url>
      <connection>scm:svn:http://localhost:8080/svn/jrepo/trunk/
      Framework</connection>
      <developerConnection>scm:svn:${username}/${password}@localhost:8080:
      common_core_api:1101:code</developerConnection>
   </scm>
   <distributionManagement>
      <repository>
         <id>Core-API-Java-Release</id>
         <name>Release repository</name>
         <url>http://localhost:8081/nexus/content/repositories/
         Core-Api-Release</url>
      </repository>
   </distributionManagement>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.0-beta-9</version>
            <configuration>
               <useReleaseProfile>false</useReleaseProfile>
               <goals>deploy</goals>
               <scmCommentPrefix>[bus-core-api-release-checkin]-
               </scmCommentPrefix>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>
  • In Pom.xml, following are the important elements we've used
Element Description
SCM Configures the SVN location from where Maven will check out the source code.
Repositories Location where built WAR/EAR/JAR or any other artifact will be stored after code build is successful.
Plugin maven-release-plugin is configured to automate the deployment process.

Maven Release Plug-in

  • The Maven does following useful tasks using maven-release-plugin.
mvn release:clean
  • It cleans the workspace in case the last release process was not successful.
mvn release:rollback
  • Rollback the changes done to workspace code and configuration in case the last release process was not successful.
mvn release:prepare
  • Performs multiple number of operations
    • Checks whether there are any uncommitted local changes or not
    • Ensures that there are no SNAPSHOT dependencies
    • Changes the version of the application and removes SNAPSHOT from the version to make release
    • Update pom files to SVN.
    • Run test cases
    • Commit the modified POM files
    • Tag the code in subversion
    • Increment the version number and append SNAPSHOT for future release
    • Commit the modified POM files to SVN.
mvn release:perform
  • Checks out the code using the previously defined tag and run the Maven deploy goal to deploy the war or built artifact to repository.
  • Let's open command console, go the C:\ > MVN >bus-core-api directory and execute the following mvn command.
C:\MVN\bus-core-api>mvn release:prepare
  • Maven will start building the project. Once build is successful run the following mvn command.
C:\MVN\bus-core-api>mvn release:perform
  • Once build is successful you can verify the uploaded JAR file in your repository.

Wikitechy provides an indepth knowledge on the below maven tutorial items such as maven download , maven install , maven goals , maven build , maven commands , maven plugin , maven search , maven eclipse , maven deploy , eclipse maven , maven junit , maven java , hibernate maven , maven project , java maven , maven version , maven proxy , maven 2 , maven pom , maven eclipse plugin , maven java version , maven properties , maven install windows , how to create maven project in eclipse , eclipse maven plugin , maven dependencies , what is maven in java , maven apache , maven project structure , how to install maven in eclipse

Related Searches to Maven Deployment Automation