Harness Artifact Registry provides comprehensive support for Maven artifacts, allowing you to host Java libraries, plugins, and applications.
Overview
Maven registry features:
- Standard Maven repository layout
- Automatic POM validation and metadata generation
- Checksum verification (MD5, SHA-1, SHA-256, SHA-512)
maven-metadata.xml generation
- Snapshot and release version support
Pushing Maven artifacts
Use the hc artifact push maven command:
hc artifact push maven <registry-name> <jar-file-path> \
--pom-file <pom-file-path> \
--pkg-url <pkg-url>
Required flags
Path to the POM file for validation and metadata extraction
Base URL for the package service
How it works
The upload process includes:
POM validation
Validates the POM file contains required groupId, artifactId, and version
Artifact naming verification
Ensures JAR filename matches {artifactId}-{version}.jar format
Checksum generation
Generates MD5, SHA-1, SHA-256, and SHA-512 checksums for verification
Metadata creation
Creates or updates maven-metadata.xml with version information
Upload
Uploads artifact, POM, checksums, and metadata to the registry
Examples
hc artifact push maven my-maven-registry ./mylib-1.0.0.jar \
--pom-file ./pom.xml \
--pkg-url https://app.harness.io/registry/pkg
POM file requirements
The POM file must contain groupId, artifactId, and version
Minimal POM:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mylib</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
</project>
Artifact naming convention
JAR filename must match the pattern:
{artifactId}-{version}.jar
Examples:
mylib-1.0.0.jar ✅
mylib-1.0.0-SNAPSHOT.jar ✅
app-2.1.0.jar ✅
mylib.jar ❌ (missing version)
mylib-1.0.jar ✅ (version doesn’t need to match POM exactly)
Consuming Maven artifacts
Configure Maven to use your Harness registry:
In pom.xml
<repositories>
<repository>
<id>harness</id>
<url>https://<registry-url>/</url>
</repository>
</repositories>
In settings.xml
<settings>
<servers>
<server>
<id>harness</id>
<username>your-username</username>
<password>your-harness-api-token</password>
</server>
</servers>
<profiles>
<profile>
<id>harness-profile</id>
<repositories>
<repository>
<id>harness</id>
<url>https://<registry-url>/</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>harness-profile</activeProfile>
</activeProfiles>
</settings>
Checksum verification
The CLI automatically generates and uploads checksums:
mylib-1.0.0.jar.md5
mylib-1.0.0.jar.sha1
mylib-1.0.0.jar.sha256
mylib-1.0.0.jar.sha512
Maven clients verify these checksums during download.
CI/CD integration
- name: Build and publish
run: |
mvn clean package
hc artifact push maven my-registry ./target/*.jar \
--pom-file ./pom.xml \
--pkg-url https://app.harness.io/registry/pkg
env:
HARNESS_API_KEY: ${{ secrets.HARNESS_API_KEY }}
stage('Publish') {
steps {
sh '''
mvn clean package
hc artifact push maven my-registry ./target/*.jar \
--pom-file ./pom.xml \
--pkg-url $PKG_URL
'''
}
}
Troubleshooting
Ensure your POM contains all required fields:# Check POM structure
mvn help:effective-pom
JAR filename must follow Maven naming conventions:# ❌ Wrong
mylib.jar
# ✅ Correct
mylib-1.0.0.jar
Checksum generation failed
Ensure the JAR file is readable and not corrupted:# Verify JAR integrity
jar -tf mylib-1.0.0.jar
See also