Does Nexus OSS support proxying of Ivy repos? - ivy

It's clear from Sonatype's website that Nexus Pro supports proxying of Ivy repos.
However, the Nexus documentation does not mention this, and anyway is never clear whether it's describing Nexus OSS or Nexus Pro.
Does Nexus OSS support proxying of Ivy repos?

The link you mentioned answers your question:
No. Ivy repositories are not supported by Nexus OSS or Pro at this
time. However in most cases Maven repositories are the preferred
choice mostly for interoperability with other build tools like Maven,
SBT and others. More detail can be found in
http://books.sonatype.com/nexu...
Nexus is effectively the reference implementation of a Maven repository. Whether one likes it or not it has become the de facto standard for the storage of Java binary artefacts.
Thankfully ivy is well able to support both the upload and download of artefacts from Maven repositories. Secondly there is no repository management software available for ivy repositories, so really I cannot think of a reason not to use Nexus. It allows me to share my ANT build with other java projects built using Maven, Gradle, SBT, etc....

Related

Jfrog Artifactory what is used for

I've a question about Jfrog Artifactory.
I don't know for what it is used. Can you explain me this in practical way ?
Thanks in advance!
From the tag description of artifactory:
Artifactory is a binary repository manager for use by build tools (like Maven and Gradle), dependency management tools (like Ivy, NuGet and RubyGems) and build servers (like Jenkins, TeamCity and Bamboo). It comes as downloadable version (OSS, Pro and Enterprise with additional features) and cloud SaaS version.
Simply put it's a self-hosted/on-premise remote location in which you can store Java/Maven dependencies (with the open source version) and various other package types (NPM, rubygems etc) with the pro version

Gradle distributions repository in artifactory outdated?

I set up my virtual repository in artifactory to cache gradle distribution libraries by adding a remote repository called 'gradle-distributions' as described here. This remote repository points to this repository
As it looks like, the stated remote repository is not up to date any more because the latest version offered is gradle-1.0-milestone-8-bin.zip.
Is there a workaround for this issue, like pointing to a different remote repository or whatsoever?
Thanks in advance.
Gradleware now distributes Gradle from http://services.gradle.org/distributions/
But I am not sure that's what you are looking for. If you need some Gradle modules to depend on (like the api), you should use gradleApi() dependency, as described here.
If you're looking for other dependencies, you can configure your Gradle to use standard Artifactory remote repositories like lib-releases and make sure that Bintray's JCenter is configured as a remote repository and included in remote-repos virtual repository.
Gradle has moved the repository to http://services.gradle.org/distributions/

SVN Backed Maven Repo

We are using SVN as a Maven Repositary. We knew that it isn't advisable to have SVN backed maven repository, but still we have to go with it due to limitation within our organization. SVN backed repository used currently is partially implemented.We have developers working from two different geographical location. Problem we face now is whenever a developer adds a artifact to maven repo(svn repository) all other developers have to update the local svn view manually to get the newly added artifact before we do mvn clean package.
IS there a way to automatically download the artifact from svn maven repository to local repo if the artifact doesn't exists locally?
SVN is hosted with a webserver so maven repositary is accessed using HTTPS protocol only. We use maven 2.2 version.
I tried with wagon plugin which would deploy the build output(jar\war) to scm directly. We are not interested in deploying the build outputs. We need a solution to download artifacts automatically from svn maven repo if it isn't exists locally?
You make no mention of how your SVN repository exposes it's artifacts to the development teams. If it truly a Maven repository (conforming to the standard Maven repository layout) then you could just specify it's URL in the "repositories" section of your POM. Updating the local repo would then no longer be necessary.
I suspect that what you have checked into subversion is not a Maven repository layout? You'd lose one of the key benefits of using subversion if each new version of an artifact was being checked in as a new file....
You are describing the functionality offered by any Maven repository manager, for example: Nexus.
I understand your reluctance to embrace a new repository technology, but SCM systems like subversion are primarily designed for tracking changes to textual files.
In conclusion, if you truly wish to keep subversion in the loop I'd suggest one of two options:
Use subversion to control the contents of the local repository. (3rd party dependencies and the artifacts generated by the developers)
Use a repository manager like Nexus. Let Nexus manage cached content from external repositories, but commit the contents of locally hosted repositories into Subversion.

Need presentation materials for convincing a customer to use Maven

My customer needs a more organized inventory of all 3rd-party libraries (such as JAR files) that are used in production for their projects. I am involved with a number of their Java-based projects. Their inventory has not been consistently maintained in the past and the time has come to account for all the libraries that are currently being used (there are quite a few!) and to enforce a structured process for introducing new libraries into the build environment.
I have tried pitching the idea of using Maven and Artifactory in their build process to leverage those tools' ability to manage a repository of binary libraries and handle transitive library dependencies. The customer is resistent to the suggestion because they think it will create more work for them to maintain an Artifactory server and learn the basics of Maven.
Currently, their Java projects are all built using Ant scripts. Transitive dependencies are largely managed by trial-and-error. The inventory of libraries currently in use is maintained by hand and the binaries are stored in a Subversion repository. The customer recognizes that this needs to be improved, but the current suggestions for improvement involve more ad-hoc "manage it by hand" approaches.
I want to convince the customer that a combination of Maven and Artifactory is a viable off-the-shelf solution for their Java library management needs. Can anyone direct me to literature/materials that I can use to create a presentation for my customer on the features and strengths of Maven and Artifactory?
Any other arguments/suggestions/etc that would assist me in this would also be appreciated.
I want to convince the customer that a combination of Maven and Artifactory is a viable off-the-shelf solution for their Java library management needs.
As pointed out in a comment, your customer doesn't necessarily need to fully adopt Maven to benefit from dependency management, you could adapt the existing ant scripts to use the Maven Ant tasks or Ivy. This might be less scary and already remove some pain.
Regarding the way Maven manages dependencies, I would simply explain that:
An artifact is identified by coordinates (groupId, artifactId, version).
This allows to store store them using a standardized directory structure (a repository)
A dependency is more that a JAR: it's a JAR with a POM which enables things like transitive dependencies resolution.
And the benefits of such a dependency management solution are:
no mess with dependencies, they are uniquely identified (no more "what version is that?" syndrom)
no more binary data in the VCS (faster checkout, less space)
easier reuse of artifacts between projects (no more jars sent by email)
easier management with transitive dependency resolution
And because you don't want to rely on public repositories, because you need to store your own artifacts, you need an enterprise repository. My personal choice would be Nexus:
because it's file based (unlike Artifactory, and I don't want to put my artifacts in a database)
because it's simple to install/use
because it's easy to administrate
Here are some resources about Nexus (sorry, I just don't use Artifactory):
Should we use Nexus or Artifactory for a Maven Repo?
Ning’s Migration from Artifactory to Nexus Professional
From Apache Archiva to Sonatype Nexus
And just in case, here are some presentation material about Maven:
Several presentations by Arnaud Héritier.
Maven 2.x by Jason van Zyl.
Maven 2.0 - Improve your build patterns by Vincent Massol.
3.5. Core Concepts in the Maven Definitive Guide

Publish a library to maven repositories

I have a stable opensource library and was wondering how (and if) I can publish my lib to maven official repositories so people can include it in their pom.xml files and get the dependency downloaded automatically.
The process to get your library in the central repostiory is documented in the Guide to uploading artifacts to the Central Repository. In short, the new process is to get your project hosted by one of the approved Forges that will be synced with central, the Maven folks don't rsync personal repository anymore. In your case, your best bet would be to use the Sonatype Forge (open to any OSS Project). Check the given link (and also this document).
If you want reliable access for everyone out there, you need to stick with central. Due to the tendency of people at dev.java.net to break rules about the immutability of released artifacts, some people don't trust it. Further, it can be Very Slow.
To get your project into central, you need have your code in some public repo that they can sync from.
Central repository
A bit less bureaucratic dev.java.net Maven2 repository - allows completely automatic deployment.