[
https://jira.codehaus.org/browse/MNG-3092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=323053#comment-323053
]
Sergei Ivanov commented on MNG-3092:
------------------------------------
@Scott:
45 minutes is clearly abnormal: it takes me about 5 minutes to refresh all our
100+ Maven3 projects configured within an uber-project in IDEA, or 10 minutes
if IDEA needs to rebuild indexes. Either M2E is going around in circles and
trying to resolve dependencies thousands of times, or there is something in
your environment that causes massive delays.
Please make sure that your {{settings.xml}} file has a mirror section that
redirects all requests to 'central' to your Artifactory instance. Otherwise
Maven may attempt to fall back to looking any missing artifacts in central
(it's hardcoded in Maven and cannot be switched off!). If you are behind a
proxy server, these requests will be blocked, if you happen to have direct
access to the internet, then you'll be hammering central with requests for your
internal artifacts, which is bad news for both you (it takes considerable time
and creates a security risk) and maven central (it has to handle all those
unnecessary requests). Try to activate debug logging in both Artifactory and
Maven/M2E and make sure it is not attempting to do any silly things.
For reference, we have got the following sections in {{settings.xml}} (all
names changed to protect the innocent):
{code:lang=xml}
<mirrors>
<mirror>
<id>internal-mirror</id>
<name>Internal Maven repo, proxying to external repos, including
central</name>
<url>http://our-repo.fm.rbsgrp.net:8081/nexus/content/groups/public</url>
<mirrorOf>external:*,our-artifact-releases,our-plugin-releases,!our-artifact-snapshots</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>our-releases</id>
<repositories>
<repository>
<id>our-artifact-releases</id>
<name>Our Release Repository</name>
<url>http://our-repo.fm.rbsgrp.net:8081/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>our-plugin-releases</id>
<name>Our Release Repository</name>
<url>http://our-repo.fm.rbsgrp.net:8081/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>our-snapshots</id>
<repositories>
<repository>
<id>our-artifact-snapshots</id>
<name>Our Snapshot Repository</name>
<url>http://our-repo.fm.rbsgrp.net:8081/nexus/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>our-releases</activeProfile>
</activeProfiles>
{code}
Please note that the {{our-snapshots}} profile is not active by default. This
is to block remote shapshots if one does not want to download them.
@Jesse:
Please keep in mind that Maven3 creates a number of maven-metadata.xml files in
the local repo:
# At groupId/artifactId level it creates a {{maven-metadata-<repo/mirror
name>.xml}} file for every remote repo or a mirror that is configured in POM or
{{settings.xml}}. Additionally, it creates {{maven-metadata-local.xml}} file
that reflects local artifact installs.
# At groupId/artifactId/version level it creates {{maven-metadata-local.xml}}
file for local artifact installs only.
Deleting all locally cached snapshot directories under groupId/artifactId
directory without updating or purging the top-level metadata files is a recipe
for trouble. Stale version references in metadata files will make Maven believe
that those snapshots still exist, and it will desperately try to download
metadata and artifacts for the "missing" snapshot versions.
I suspect that you may have a cron job that purges snapshots from the local
repo daily, but does not do it in a clean way. As a result, "one build per day
spends a chunk of time" attempting to fetch these missing snapshots from
elsewhere.
> Version ranges with non-snapshot bounds can contain snapshot versions
> ---------------------------------------------------------------------
>
> Key: MNG-3092
> URL: https://jira.codehaus.org/browse/MNG-3092
> Project: Maven 2 & 3
> Issue Type: Bug
> Components: Dependencies
> Reporter: Mark Hobson
> Assignee: Jason van Zyl
> Fix For: 3.1.1
>
> Attachments: MNG-3092.patch, MNG-3092.patch
>
>
> Contrary to the 2.0 design docs:
> "Resolution of dependency ranges should not resolve to a snapshot
> (development version) unless it is included as an explicit boundary."
> -- from
> http://docs.codehaus.org/display/MAVEN/Dependency+Mediation+and+Conflict+Resolution#DependencyMediationandConflictResolution-Incorporating%7B%7BSNAPSHOT%7D%7Dversionsintothespecification
> The following is equates to true:
> VersionRange.createFromVersionSpec( "[1.0,1.1]" ).containsVersion( new
> DefaultArtifactVersion( "1.1-SNAPSHOT" ) )
> The attached patch only allows snapshot versions to be contained in a range
> if they are equal to one of the boundaries. Note that this is a strict
> equality, so [1.0,1.2-SNAPSHOT] will not contain 1.1-SNAPSHOT.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira