DevOps Artifacts - Artifactory, Sonatype Nexus, Maven Artifact Repository, and Apache Archiva
Here is a question asked about artifacts from What's the purpose of an artifact repository?
"Wherever you read about continuous delivery or continuous integration it's recommended to use an artifact repository to store the artifacts even though Jenkins already stores them for each build."
So why is it recommended to use an artifact repository? Is there a smooth solution to work with the artifacts of the Jenkins builds, ex. to use these artifacts for deployment?
An answer given was:
"An artifact repository and continuous integration tools serve two different purposes and one cannot be substituted with the other. Check this video from Artifactory, one of the providers of artifact repositories, about why one should use an artifact repository."
"Jenkins stores the artifacts as plain files without versioning while artifacts in an artifact repository can be version controlled. So you have a lot more flexibility in retrieving artifacts and governing them. Read this very good article on why we need them. Surely not all of those things are supported by continuous integration tools like Jenkins."
"Moreover, you can also look at the Artifactory plugin for Jenkins which integrates the two."
Google Trends - Big 4 : Artifactory, Sonatype Nexus, Maven Artifact Repository, and Apache Archiva
The importance of artifact repository and repository management have been continuously increasing.
Artifact repository is a collection of binary software artifacts and metadata stored in a defined directory structure which is used by clients such Maven, Mercury, or Ivy to retrieve binaries during a build process.
"In the case of the Maven repository, the primary type of binary artifact is a JAR file containing Java bytecode. A Maven repository provides a platform for the storage, retrieval, and management of binary software artifacts and metadata."
"In Maven, every software artifact is described by an XML document called a Project Object Model (POM). This POM contains information that describes a project and lists a project's dependencies - the binary software artifacts which a given component depends upon for successful compilation or execution. When Maven downloads a dependency from a repository, it also downloads that dependency's POM. Given a dependency's POM, Maven can then download any other libraries which are required by that dependency. The ability to automatically calculate a project's dependencies and transitive dependencies is made possible by the standard and structure set by the Maven repository." - from What is an Artifact Repository?.
The primary characteristics of an artifact repository are (in case of Maven):
- Our libraries will be versioned controlled.
- Other teams will simply need declare a dependency in their pom to use our library.
- Our common library is now shared.
Picture from Java Tools and Technologies Landscape for 2014
Ph.D. / Golden Gate Ave, San Francisco / Seoul National Univ / Carnegie Mellon / UC Berkeley / DevOps / Deep Learning / Visualization