7

I have a private Maven repository. It's defined in pom.xml of the project

    <repository>
        <id>some.id</id>
        <url>https://some.host/artifactory/some.id</url>
    </repository>

In my ~/.m2/settings.xml, I have proper authentication block:

    <server>
        <id>some.id</id>
        <username>pawel.veselov@domain.com</username>
        <password>{some-fancy-password-hash-goes-here}</password>
    </server>

When building the project, Maven is able to access the repository without any problems, as it's supposed to be. In debugging output, I can see it applying the credentials.

But when I try to download an artifact directly, it doesn't look like Maven is even considering the settings file.

mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get \
  -DremoteRepositories=some.id::::https://some.host/artifactory/some.id \
  -Dartifact=groupId:artifactId:1.1.1

The username is not transmitted. I can see in the debug output, that the BasicRepositoryConnector is invoked without username/password combination.

So the question goes - can a plugin be invoked so that whatever process makes Maven consider using the authentication stated in its settings file is executed?

Pawel Veselov
  • 3,996
  • 7
  • 44
  • 62

1 Answers1

4

It doesn't look like the plugin is using the saved credentials when remoteRepositories property is used. Testing using repositoryId instead worked as expected for me.

mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get -DrepositoryId=some.id -Dartifact=groupId:artifactId:1.1.1

The effective pom must contain repository and url for the repo. If you plan to run this in an empty directory without any pom.xml then your repository definition will need to be moved to settings.xml

Revive
  • 2,248
  • 1
  • 16
  • 23
  • Thank you. It may be worth mentioning that repository definition must be inside a profile, when in it is in settings.xml file. I checked that it works both ways, either through an effective POM with repository definition, or through repository defined in settings, and being referenced by ID. – Pawel Veselov Nov 20 '18 at 18:28