Symptom
Maven 2 artifact deployments specifically using the 3.0.0-M1 version of the maven-deploy-plugin may fail with a message:
ArtifactDeployerException: Failed to deploy artifacts: Could not transfer artifact
and a reason:
Return code is: 401, ReasonPhrase: Unauthorized.
Cause
A bug has been reported against the maven-deploy-plugin with this new problem:
https://issues.apache.org/jira/browse/MDEPLOY-244
The 3.0.0-M1 release was late September 2018.
The latest previous release of the maven-deploy-plugin was over 4 years prior. The latest plugin release version will automatically be used if the project POM or Maven invocation does not explicitly state a version of the plugin to use.
Workaround #1
Best practices to ensure repeatable Maven builds require locking down Maven plugin versions using versions defined in the pluginManagement section of project parent POM files.
https://maven.apache.org/pom.html#Plugin_Management
The last release version of the maven-deploy-plugin prior to 3.0.0-M1 without this bug was version 2.8.2.
To enforce an earlier version of the maven-deploy-plugin be used, define such a POM section such as below:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<build>
...
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
...
</build>
</project>
If you are invoking the deploy-file goal at invocation time, then use the full plugin coordinate to enforce the plugin version:
> mvn org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file ...
Workaround #2
The maintainers of the maven-deploy-plugin have acknowledged the regression and provided advice on how to change the deployment URL so that the latest releases of the plugin will work. See this comment.