What issues does Artifactory resolve?
We found out that, when working with Maven artifacts, most organizations need to have a reliable artifacts proxy service in place, for the following reasons:
- The public Maven repositories can become unreliable from time to time (down, highly busy, slow...). It is also not uncommon for broken or wrong artifacts to appear on these repositories. This unexpected behavior can fail the build and/or lead to non-reproducible build results, which for most enterprises is a must.
- It is expensive and inefficient for every developer inside the same organization to go and retrieve remote artifacts that are shared by nature.
- Without a mesh of proxies, there is no easy way to automatically share artifacts in multi-site development environments.
- There is often a need to globally enforce and control the repositories and the artifacts included in a build in terms of: security, licensing, include/exclude patterns (do not look for in-house artifacts on repo1), etc. This can only be achieved by a global proxy.
- As part of a normal build Maven will send update queries to its public repositories, even for organization internal artifacts. Such query requests going over the internet may reveal sensitive information about your ongoing projects, which the organization would like to keep private. Using Artifactory's include/exclude patterns allows you to avoid internal artifacts from being queried on the internet.
How does Artifactory work?
Behind the scenes, Artifactory uses a JSR-170 compliant Java Content Repository (JCR) for storage, using the Apache Jackrabbit implementation. This natural fit makes it extremely easy to manage fully indexed and searchable metadata and to provide full repository coherence with extended features such as security, transacted operations, auditing, locking, etc.
Artifactory's rich Ajax web UI is based on the excellent Apache Wicket web framework.
The standard standalone distribution is using the Jetty servlet container for quick out-of-the-box startup, but it can just as easily be deployed on any servlet container.
With a database used for artifact storage, won't I be loosing control over my repository?
On the contrary. Using JCR and a DB for storage not only offers a superior technical solution, but also allows for greater control over your repository. Artifactory provides browsing, deploying and undeploying through an Ajax web UI which allows doing all common administrative operations in a security-aware fashion.
Additionally, if you wish to import or export your repositories to the file system or execute scheduled backups of your repositories to regular file system directories, Artifactory allows you to do that.
After using Artifactory with Derby DB for storing my artifacts will I be forced to use Artifactory forever?
Of course not. This is why we created the Import/Export/Backup features, to allow Artifactory users to create a standard file-system based Maven 2 repository layout of the Artifactory DB repositories.
Does Artifactory provide mirroring? How do I achieve mirroring with Artifactory?
No. Artifactory uses controlled caches of remote repositories, not mirroring. Caches are populated lazily upon request, so it is only when Maven starts hitting it with requests that caches start to fill up with artifacts. Indexing is done completely by Jackrabbit and, unlike with mirroring, is up to date immediately. When following the standard practice of running continuous builds using a build server, the Artifactory caches would normally be repeatedly synchronized, achieving similar effect to that of mirroring.
Under what license is Artifactory distributed?
Artifactory uses the friendly Apache License, Version 2.0.
How can I report a bug or ask for new features?
By submitting a request to JIRA.
What protocols can be used to proxy remote repositories?
At the moment, only HTTP(S)-enabled remote repositories are supported, including WebDAV repositories. We see HTTP as the primary repository protocol which is used in 95% of the cases and at the moment do not have concrete plans to support other protocol types.
What Maven repository formats are supported?
Artifactory supports both Maven 2 and Maven 1 remote repositories. The client is assumed to be a Maven 2 client. We do not support Maven 1 clients, nor we intend to.
How do I login to Artifactory for the first time? What are the default admin username and password?
Artifactory comes with a pre-configured default "admin" account. Username: admin, Password: password.
How do I build Artifactory from source? Maven tells me there are some missing dependencies.
Simply download the source and run
mvn clean install from within the Artifactory root module (parent").
To gain access to open source dependencies not currently deployed on Maven's public repositories, you have to run mvn with the "jfrog" profile activated. e.g.:
mvn clean install -Pjfrog.
How do I run Artifactory in debug mode?
Just change the right line in the
$ARTIFACTORY_HOME/etc/log4j.properties file to:
Why do you strongly recommend against deploying unique snapshots?
Because doing so normally promotes an unmanageable build environment.
In practice, unique snapshots are never tracked for the real changes they carry: the snapshot's final name is not human deterministic and its "meaning" is normally obscure to developers since, by itself, it has no relation to the source it has been compiled against. Moreover, many times snapshots in a multi-module environment are dependent on other snapshots, so you would have to reconstruct by hand a cryptic dependency chain just to get back to a version you believe is stable. Often, the identification process of such a version is, by itself, obscure and is based on common inputs such as "yesterday before lunchtime everything worked"
Therefore, it is highly preferable to use non-unique snapshots in development and, when needing, go back to a stable non-snapshot version by reconstructing one from a specific revision/tag in the VCS, where the meaning of the artifact can be easily tracked. It is advised to have the artifact itself embed the revision/tag (as part of its name or internally) for clear and visible revision tracking.
I am trying to use Artifactory with MS-IE 6, but some stuff seems not to be working correctly. What's wrong?
We are doing our best to maintain full cross browser behavior, but our resources are limited, so Firefox an IE 7 always come first. It is strongly recommended to upgrade to one of these browsers.
When using Artifactory behind an Apache httpd reverse proxy I am getting the local server name instead of the its real name inside web UI links.
Try adding the following directive to you Apache configuration:
How can I force Artifactory to recreate its indexes?
Stop Artifactory, delete the
$ARTIFACTORY_HOME/data/jcr/workspaces/default folder and restart Artifactory. Be patient, as it might take some time for Artifactory to rebuild its indexes, depending on the repository size.
Artifactory's Live Demo
How do I login to the online demo?
To login use the read-only "guest" account. Username: guest, Password: guest.
I logged in as "guest" and now some of Artifactory's functions are not accessible or contain no data. What's wrong?
Nothing is. Being on a public demo, the "guest" account is a limited read-only account.
If you wish to use administrative or experiment with privileged operations please download and install a local instance of Artifactory.