On Mon, Jun 20, 2011 at 19:54, Paul French <paul.fre...@kirona.com> wrote:
> Below is some filtered output from a maven build (showing maven meta data
> being downloaded for one artifact). All my dependencies use version ranges
> of the form [1.0.0.SNAPSHOT,2.0.0.SNAPSHOT)
>
> In general the build fails with out of memory. I can increase the heap size
> and the build is successful, but a relatively simple build is now requiring
> 500MB heap size.
>
> First question is why is maven re-checking and downloading the same meta
> data over and over again?
>
> If I add additional version ranged dependencies to my pom then the problem
> seems to get exponentially worse. For a larger build so many requests are
> made so quickly to the nexus remote repository that I start to see "Error
> transferring file: Address already in use: connect".
>
> Any ideas how to reduce the memory usage? Do not say "do not use version
> ranges". We use semantic versioning enforced by API analysis tools for each
> of our modules (OSGi bundles) so we require version ranges.
>
> If I change all version range dependencies to an exact dependency (a serious
> amount of pom editing) then all is fine. As you can tell below we have 3
> main internal remote repos setup (kirona, kirona-snapshot and
> third.party.libraries). We do not specify version ranges on libraries that
> are not in our control e.g. log4j etc etc
>
> Downloading:
> http://fuji:8081/nexus/content/repositories/third-party/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloading:
> http://fuji:8081/nexus/content/repositories/kirona/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloaded:
> http://fuji:8081/nexus/content/repositories/kirona-snapshots/com/kirona/server/third.party.libraries/maven-metadata.xml
> (354 B at 21.6 KB/sec)
> Downloaded:
> http://fuji:8081/nexus/content/repositories/kirona/com/kirona/server/third.party.libraries/maven-metadata.xml
> (318 B at 6.6 KB/sec)
> Downloading:
> http://fuji:8081/nexus/content/repositories/kirona/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloading:
> http://fuji:8081/nexus/content/repositories/kirona-snapshots/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloading:
> http://fuji:8081/nexus/content/repositories/kirona-knopflerfish/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloading:
> http://fuji:8081/nexus/content/repositories/third-party/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloaded:
> http://fuji:8081/nexus/content/repositories/kirona/com/kirona/server/third.party.libraries/maven-metadata.xml
> (318 B at 10.0 KB/sec)
> Downloaded:
> http://fuji:8081/nexus/content/repositories/kirona-snapshots/com/kirona/server/third.party.libraries/maven-metadata.xml
> (354 B at 11.2 KB/sec)
> Downloading:
> http://fuji:8081/nexus/content/repositories/kirona-snapshots/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloading:
> http://fuji:8081/nexus/content/repositories/third-party/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloading:
> http://fuji:8081/nexus/content/repositories/kirona/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloading:
> http://fuji:8081/nexus/content/repositories/kirona-knopflerfish/com/kirona/server/third.party.libraries/maven-metadata.xml
> Downloaded:
> http://fuji:8081/nexus/content/repositories/kirona/com/kirona/server/third.party.libraries/maven-metadata.xml
> (318 B at 9.7 KB/sec)
> Downloaded:
> http://fuji:8081/nexus/content/repositories/kirona-snapshots/com/kirona/server/third.party.libraries/maven-metadata.xml
> (354 B at 10.8 KB/sec)
> Downloading:
> http://fuji:8081/nexus/content/repositories/kirona/com/kirona/serve...........
>
> The above problems renders eclipse useless with m2e, it causes eclipse to
> hang on start up (build automatically set to true) and eventually die!!
>
> I'm starting to come to the conclusion that between maven and m2e version
> ranges just do not work very well. I hope I am wrong!!
>
> Thanks
> Paul

In my a case I found Maven slurping metadata on every build was
related to how I had configured <updatePolicy>always</updatePolicy> in
repositories profile defined in my settings.xml (It had been a
"temporary" change which got forgotten...)

I got burned twice by version ranges. (It's at least a few years ago,
so I don't remember the specifics.) I haven't touched them since.
Also, their meaning hinges on how Maven chooses to sort versions, and
I've not yet seen a sufficiently unambiguous definition of that.
Consider that Maven will accept aNyOld3.2Crap-X1r as a version number.
 Even if you stick to the 'parse-able' versions of the form
1.2.3-mumble.

1.2.3-SNAPSHOT < 1.2.3
1.2.3-beta10 < 1.2.3-beta2
1.2.3-beta1-SNAPSHOT < 1.2.3-beta1
1.2.3-beta1 >?< 1.2.3?
1.2.3-beta1-SNAPSHOT >?< 1.2.3-SNAPSHOT

Take your best guess.

Sticking to using only SNAPSHOTs and single concrete versions is more
work if you have a large number of interdependent projects. It does
have the advantage of recording in your version control system very
specific information about which versions go (went) together.

// ben

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to