Hi Greg,
On 19/05/17 23:55, Greg Parker wrote:
Thanks for the reply ,
....
>
Although having a separate .m2 folder is quite possible and would
address my issue,
> it’s something I’m trying to avoid for performance reasons.
> Pulling down all the external dependencies from Archiva,
> or central repository, for each project takes too long
> and takes up too much space.
Archiva should proxy central repository and you should never directly
pick dependencies from Maven Central only via a proxies repositores...
The time is an issue but only for the first time ...you can use updates
in version control so it's not necessary to download the deps for each
build (I don't know how long your builds take? We have build about max
15 minutes release build and ci build takes 6 minutes)
Disk space ? Is that really a question? disk space is cheap...currently
each of our builds takes 15 GiB of disk space for CI and our release
build take 54 GiB...currently having 5 branches in parallel having some
other builds as well..in total we are talking about approx 1.5 TiB...
It's important to check how long the downloads really take it might be a
task to improve your infrastructure...
>
Our builds have a customer implementation
> component which means we have many
> builds for many customers.
what does "many " builds mean? 10, 100, 1000 ? different builds?
>
What I would like to have is a common .m2 folder for external dependencies,
> > and a build specific .m2 folder with just the build output.
In Maven only a single location for the cache exists..
Apart from that I really don't understand your concerns having your own
artifacts separated from those others? They are separated by
groupId/artifactId/version etc.
What kind of problem are you trying to solve?
Furthermore in the minute you are using a single cache part for several
build all those builds are coupled via this cache...
Another thing is important here. This means you are coupling those
builds to a particular build node if this cache does not exist your node
can't run the build there...That's why the build cache in the workspace
is the best option...
Kind regards
Karl Heinz Marbaise
Something like:
~/.m2/repository
/log4j
/commons-io
/…
$WORKSPACE1/.m2/repository
/customer1-lib
/build-lib
/...
$WORKSPACE2/.m2/repository
/customer2-lib
/build-lib
/...
That way I don’t have to pull down all the common stuff into a fresh .m2 for
each build.
On May 19, 2017, at 5:36 PM, Karl Heinz Marbaise <khmarba...@gmx.de> wrote:
Hi Greg,
On 19/05/17 19:12, Greg Parker wrote:
I’m looking for a way to isolate builds from one another on our Jenkins server.
What I would like to do is have a common .m2 folder
for external dependencies.
For my own artifacts I’d like to install/retrieve
them to/from a separate local repository.
I suspect that this capability does not exist, but I thought I would check.
The first thing what you need to understand is that the $HOME/.m2/repository is
a cache location where the artifacts which are downloaded only cached to
prevent repeated downloads from remote repositories..
The first step is to separate build jobs in Jenkins means that each job has
it's own local cache directory which means having the local cache in the
workspace ($WORKSPACE/.repository)...
The second step is having a repository manager (like Nexus, Artifactory or
Archiva) which handles the separation between the artifacts which are created
by your own and the ones you are consuming from outside (for example from Maven
Central)..
There I would suggest to make this difference for your own artifacts and the artifacts
which you call "external"...
Kind regards
Karl Heinz Marbaise
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org