-
Notifications
You must be signed in to change notification settings - Fork 0
Nexus
This page provides information how to publish a Java project to the Nexus repository instance running at repo.eclipse.org. Readers are expected to be familiar with Maven concepts and Maven repository publishing. If this is not the case, we strongly suggest readers to first read the basics from Sonatype's documentation and the Apache Maven Deploy plugin.
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.
Notes:
- Snapshots older than 7-days are automatically removed on a weekly basis, with the minimum of 1 snapshot being retained.
- All snapshots for a given GAV are automatically removed 14 days after release.
- All snapshots not being requested in the last 360 days will be automatically removed.
File a ticket and specify what project you'd like a Nexus repo for.
3 repositories are typically created:
- group:
https://repo.eclipse.org/content/repositories/<projectname>
, which groups both releases and snapshots repositories. - releases:
https://repo.eclipse.org/content/repositories/<projectname>-releases/
, for publishing releases. Re-deploy is disabled. - snapshots:
https://repo.eclipse.org/content/repositories/<projectname>-snapshots/
, for publishing snapshots. Re-deploy is enabled.
Projects can only publish to these repositories from their Jenkins instance. Committers cannot do anything administrative on the instance.
To use repo.eclipse.org to pull artifacts for your project, there are a few URLs that can be used.
https://repo.eclipse.org/content/repositories/releases/
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
https://repo.eclipse.org/content/repositories/snapshots/
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.
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.
To deploy artifacts to repo.eclipse.org, you will need to use Jenkins (http://ci.eclipse.org/) to configure a job for deploying your artifacts.
It is recommended that you use JDK 8 or higher, as we have seen SSL Handshake issues when using JDK 7 and lower.
Before Jenkins 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 IDs are "repo.eclipse.org" as the Jenkins instance is configured to use these IDs.
If you want to keep several snapshot versions, use:
<snapshotRepository>
<uniqueVersion>true</uniqueVersion>
[...]
Note: this tag is ignored by Maven 3.x.
Using Jenkins, you will need to configure Maven to run the "deploy" goal.
Use the "deploy" goal as one of your Maven goals as part of your build. Be careful while doing that to not specify duplicate goals (e.g., mvn verify deploy
will execute all phases up to verify
twice).
It is possible to use the Maven deploy:deploy-file goal to push a jar file into https://repo.eclipse.org/ via Jenkins. For every jar you wish to push into https://repo.eclipse.orgrepo.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>
There are 3 settings which need to be configured:
-
Goals: deploy:deploy-file
-
Properties:
groupId=<groupId> artifactId=<artifactId> version=<version> packaging=jar file=/shared/path/to/file.jar repositoryId=repo.eclipse.org url=<Your project's repo URL to push jar into>
-
POM File: /path/to/pom.xml
For example:
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.
If you are using Gradle in your build job, you can also deploy to repo.eclipse.org from your JIPP instance as described in the Gradle user guide.
Include in your Gradle script authentication configuration using the settings below, e.g.
repositories {
maven {
credentials {
username eclipseRepoUsername
password eclipseRepoPassword
}
authentication {
basic(BasicAuthentication)
}
}
}
Webmaster will need to set up the Gradle plugin in your JIPP and provide ~/.gradle/gradle.properties
with the following two variables:
eclipseRepoUsername=xxx
eclipseRepoPassword=yyy
Please file a ticket for that.