Maven - Deployment Automation

In project development, normally a deployment process consists of the following steps −
Check-in the code from all project in progress into the SVN (version control system) or source code repository and tag it.
Check-in the code from all project in progress into the SVN (version control system) or source code repository and tag it.
Download the complete source code from SVN.
Download the complete source code from SVN.
Build the application.
Build the application.
Store the build output either WAR or EAR file to a common network location.
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.
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.
Updated the documentation with date and updated version number of the application.
There are normally multiple people involved in the above mentioned deployment process. One team may handle check-in of code, other may handle build and so on. It is very likely that any step may be missed out due to manual efforts involved and owing to multi-team environment. For example, older build may not be replaced on network machine and deployment team deployed the older build again.
Automate the deployment process by combining the following −
Maven, to build and release projects.
SubVersion, source code repository, to manage source code.
Remote Repository Manager (Jfrog/Nexus) to manage project binaries.
We will be using Maven Release plug-in to create an automated release process.
For Example: bus-core-api project POM.xml.
<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/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 have used −
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.
The Maven does the 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, such as −
Checks whether there are any uncommitted local changes or not.
Checks whether there are any uncommitted local changes or not.
Ensures that there are no SNAPSHOT dependencies.
Ensures that there are no SNAPSHOT dependencies.
Changes the version of the application and removes SNAPSHOT from the version to make release.
Changes the version of the application and removes SNAPSHOT from the version to make release.
Update pom files to SVN.
Update pom files to SVN.
Run test cases.
Run test cases.
Commit the modified POM files.
Commit the modified POM files.
Tag the code in subversion
Tag the code in subversion
Increment the version number and append SNAPSHOT for future release.
Increment the version number and append SNAPSHOT for future release.
Commit the modified POM files to SVN.
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 the command console, go to the C:\ > MVN >bus-core-api directory and execute the following mvn command.
>mvn release:prepare

Maven will start building the project. Once build is successful run the following mvn command.
>mvn release:perform

Once build is successful you can verify the uploaded JAR file in your repository.

    34 Lectures 
     4 hours 

 Karthikeya T

    14 Lectures 
     1.5 hours 

 Quaatso Learning
 Print
 Add Notes
 Bookmark this page