- 1 Eclipse Nexus Instance
- 2 Pulling artifacts from Nexus
- 3 Deploying artifacts to repo.eclipse.org
- 4 Deploying a jar to repo.eclipse.org
Eclipse Nexus Instance
The Eclipse Nexus instance is hosted at: https://repo.eclipse.org
This repository allows Eclipse projects to publish their build artifacts into a centralized repository hosted by EMO.
- Snapshots older than 30-days are automatically removed on a weekly basis
Getting a Nexus repo for your Project
Simply file a Bug and specify what project you'd like a Nexus repo for.
Pulling artifacts from Nexus
To use repo.eclipse.org to pull artifacts for your project there are a few URLs that can be used.
This URL is a top-level aggregate of all project releases repositories. This URL is recommended if you just want to pull in releases from any project hosting artifacts on repo.eclipse.org
This URL is a top-level aggregate of all project snapshots repositories. This URL is useful for developers who want to pull in artifacts that may have not yet been released usually nightlies.
Project Specific Repos
Finally you can also use a project specific repo if you only want to ensure you are only pulling artifacts from specific projects. To get the URLs for these projects you can navigate to https://repo.eclipse.org/index.html#view-repositories and browse for the URL link for the specific project.
Deploying artifacts to repo.eclipse.org
To deploy artifacts to repo.eclipse.org you will need to use Hudson (http://hudson.eclipse.org) to configure a job for deploying your artifacts.
It is recommended that you use JDK 7 or higher as we have seen SSL Handshake issues when using JDK 6.
Initial Maven POM setup
Before Hudson can deploy your project's artifacts to Nexus you will need to do some setup on the Maven side to add a "distributionManagement" section to your project pom. An example below:
<distributionManagement> <repository> <id>repo.eclipse.org</id> <name>Project Repository - Releases</name> <url>https://repo.eclipse.org/content/repositories/project-releases/</url> </repository> <snapshotRepository> <id>repo.eclipse.org</id> <name>Project Repository - Snapshots</name> <url>https://repo.eclipse.org/content/repositories/project-snapshots/</url> </snapshotRepository> </distributionManagement>
Replace instances of the word "project" with your project's name.
Note: It is important to ensure your ID's are "repo.eclipse.org" as the Hudson instance is configured to use these IDs.
If you want to keep several snapshot versions use:
<snapshotRepository> <uniqueVersion>true</uniqueVersion> ...
Hudson Job Setup
Using http://hudson.eclipse.org you will need to configure Maven to run the "deploy" goal.
There are 2 ways you might want to do this:
- Simply add the "deploy" goal as one of your Maven goals as part of your build
- Create separate jobs, one for building and one for deploying (if you want more control over when to deploy)
If you decided to go with creating separate jobs, your deploy job will need access to your build job's workspace, an easy way of making this work is to configure the build job, and the deploy job with the optional Use custom workspace configuration under Advanced project options.
Replace <your build job project name> with the name of your project job, for example if your build job was named cbi-maven-plugins-build then your Directory should be /opt/public/jobs/cbi-maven-plugins-build/workspace. This setting should be configured in both your Build job and Deploy jobs.
Finally your deploy job should invoke an instance of Maven 3 with the "deploy" goal. The only additional option you need to ensure that's configured is to click Advanced and configure the Settings option and set it to Deploy to repo.eclipse.org. This custom settings file contains the necessary credentials in order for you to deploy to repo.eclipse.org.
Deploying a jar to repo.eclipse.org
It is possible to use the Maven deploy:deploy-file goal to push a jar file into repo.eclipse.org via hudson.eclipse.org. For every jar you wish to push into repo.eclipse.org an associating pom.xml file is necessary.
The simplest pom.xml can be as follows:
<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>org.eclipse.jdt</groupId> <artifactId>org.eclipse.jdt.core</artifactId> <version>3.9.0.v20130313-2254</version> </project>
hudson.eclipse.org has access to the same /shared as build.eclipse.org so placing your files somewhere there will allow hudson to be able to find it.
Configuring Hudson for mvn deploy:deploy-file
There are 3 settings which need to be configured:
- Goals: deploy:deploy-file
- url=<Your project's repo URL to push jar into>
- POM File: /path/to/pom.xml
Note: You will also need to configure your settings file to use Deploy to repo.eclipse.org per instructions in the previous section for deploying artifacts.