I'm currently experiencing a problem while trying to set up a project to
deploy to an internal nexus repository. Since I'm rather new to Maven in
general, I expect that there is just something that I'm not really
comprehending in how to set up distribution management.
The basic issue is that when I execute "mvn deploy" the artifact is being
successfully deployed to the snapshot repository, but Maven is also
attempting to deploy it to the release repository, which is failing ... as
it should. My understanding of my current configuration is that it should
NOT be deploying it to the release repository as well.
I've included the various configuration elements below, but I'm wondering if
I actually am supposed to be managing the <distributionManagement> section
with a profile so that snapshot builds only have <snapshotRepository>
defined, and release builds have only <respository> defined.
Any help/clarification on this would be incredibly appreciated.
I have the following in my POM for distribution management:
<distributionManagement>
<repository>
<id>internal-releases</id>
<name>Internal Releases</name>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>internal-snapshots</id>
<name>Internal Snapshots</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
Elsewhere in the POM I have the following set up to allow use of these
repositories to obtain artifacts:
<repositories>
<repository>
<id>internal-releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
<snapshots><enabled>false</enabled></snapshots>
</repository>
<repository>
<id>internal-snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<!-- other repos, etc, etc -->
</repositories>
I have the correct settings in my settings.xml to provide credentials to be
able to publish to this test nexus instance running on my computer, and it
is in fact successfully deploying the snapshot.
The problem is that it also tries to deploy the snapshot to the release
repository, which is configured to disallow snapshots.
The output from "mvn deploy" includes the following:
[INFO] [deploy:deploy {execution: default-deploy}]
[INFO] Retrieving previous build number from internal-snapshots
Uploading:
http://localhost:8081/nexus/content/repositories/snapshots/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-8.war
405K uploaded (service-1.0.0-20101104.170338-8.war)
[INFO] Retrieving previous metadata from internal-snapshots
[INFO] Uploading repository metadata for: 'snapshot
com.internal:service:1.0.0-SNAPSHOT'
[INFO] Retrieving previous metadata from internal-snapshots
[INFO] Uploading repository metadata for: 'artifact com.internal:service'
[INFO] Uploading project information for service 1.0.0-20101104.170338-8
[INFO] [deploy:deploy-file {execution: default}]
[INFO] Retrieving previous build number from remote-repository
[INFO] repository metadata for: 'snapshot
com.internal:service:1.0.0-SNAPSHOT' could not be found on repository:
remote-repository, so will be created
Uploading:
http://localhost:8081/nexus/content/repositories/releases/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar
[INFO]
------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO]
------------------------------------------------------------------------
[INFO] Error deploying artifact: Failed to transfer file:
http://localhost:8081/nexus/content/repositories/releases/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar.
Return code is: 400
The log from Nexus contains the following (as I would expect it to):
jvm 1 | 2010-11-04 13:03:39 INFO [p-759477796-118] -
o.s.n.p.m.m.M2Repos~ - Storing of item
releases:/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar
is forbidden by Maven Repository policy. Because releases is a RELEASE
repository
jvm 1 | 2010-11-04 13:03:39 ERROR [p-759477796-118] -
o.s.n.r.ContentPlex~ - Got exception during processing request "PUT
http://localhost:8081/nexus/content/repositories/releases/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar":
Storing of item
releases:/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar
is forbidden by Maven Repository policy. Because releases is a RELEASE
repository