Skip to contentSkip to content

Troubleshooting ​

The build can't authenticate ​

Sign in with a personal access token to access this repository.

In this message, sign in means authenticate. The build sent no credentials, or Artifex didn't accept the token because it was revoked, expired, or created for another product.

Do the following:

  1. Check that your build sends credentials. For Maven, the id of the server in settings.xml must match the repository's id. For Gradle, the properties must be named after the repository.
  2. On the Personal access tokens page in CodeSoh Accounts, check that the token is an Artifex token and hasn't been revoked.
  3. Check that the token hasn't expired.

Deploying to a public repository also requires a token because every write requires authentication.

The token doesn't authorize the operation ​

You don't have permission to do that in this repository.

Artifex accepted the credentials, but the token access level doesn't authorize the requested operation.

Do the following:

  1. If the credential is a token, check that it has access to this repository. A token has no access until you grant it, including in repositories that you own. See Tokens in Artifex.
  2. If you're deploying, check that the token has Write access.
  3. Check that you have the repository role that you granted to the token. A token never has more access than its owner.

Other refusals come from repository settings:

MessageMeaning
This repository doesn't accept snapshot versions.Allow snapshots is off. See Snapshots.
This repository doesn't allow deleting files.Allow deleting files is off. See Immutability.
The index is generated by the repository and can't be uploaded.Something tried to deploy under .index/. See The Maven index.

The build can't find something ​

The Maven repository layout determines which paths name artifacts and Maven metadata.

MessageMeaning
No repository at this address.The owner username or repository name in the URL is wrong, or the repository was deleted or renamed.
This path isn't part of the Maven repository layout.The path doesn't name an artifact or Maven metadata.
Upload the file before its checksum.A checksum was deployed before the file that it describes.
Not found.The repository doesn't store the file, and no upstream that can serve the file has it.

Artifex responds to a request for a private repository that you can't read as if the repository doesn't exist.

The deployment conflicts with stored files ​

A snapshot version can contain multiple timestamped snapshots.

MessageMeaning
This release file already exists. Releases can't be replaced.The path already stores a file, and Allow replacing files is off. Publish a different version, or turn the setting on. See Immutability.
This snapshot build already exists. Deploy again to create a new build.The same timestamped snapshot was deployed twice. Deploy again so that your build tool creates a different timestamped snapshot. See Snapshots.

The second message uses snapshot build as an alias for timestamped snapshot.

The deployment is rejected ​

Maven metadata includes version lists and the timestamp and build number of a timestamped snapshot.

MessageMeaning
The uploaded ALGORITHM checksum doesn't match the file. Expected DIGEST.The received bytes don't match the uploaded checksum. The upload was corrupted; deploy again.
The ALGORITHM checksum file isn't a hex digest.The checksum file's body isn't a hexadecimal digest.
The metadata document isn't well-formed.The uploaded Maven metadata isn't valid XML.
The metadata names build T-B, but the newest deployed build is T-B.The uploaded snapshot metadata names a timestamped snapshot other than the newest deployed one. Deploy the files before the metadata.
This path isn't part of the Maven repository layout.The deployed path doesn't follow the Maven repository layout.
Files larger than 100 MB can't be deployed.See Limits.

The repository is unavailable ​

These errors are temporary. A retry can succeed, and build tools often retry automatically.

MessageMeaning
NAME responded with STATUS.An upstream returned an error.
NAME didn't respond within N ms.An upstream didn't start responding within its Timeout. Raise it, or check whether the upstream is reachable.
NAME couldn't be reached.Artifex couldn't contact an upstream. Check its URL.
NAME sent a file whose ALGORITHM checksum doesn't match its content.An upstream's checksum disagrees with the bytes that it sent. Artifex doesn't store the file.
NAME sent no body.An upstream responded without content.
The file's bytes can't be located. or The file's bytes are missing. Try again later.The repository has a record of the file, but its bytes can't be read. Try again. If the problem continues, deploy the file again.

Unavailable isn't the same as not found. As far as Artifex knows, a dependency reported as unavailable exists. For how upstreams distinguish these outcomes, see Upstream repositories.

Builds that resolve the wrong bytes ​

If a build gets an earlier file than you expect, check the following:

  • The file page, which identifies whether the file was deployed directly to this repository or fetched from an upstream and names that upstream.
  • The activity history, which records replacements and the file's preceding value.

Advanced ​

The Maven endpoint accepts GET, HEAD, PUT, and DELETE; other methods get an HTTP 405 Method Not Allowed status code. The sections of this document correspond to the following status codes:

SectionStatus
The build can't authenticate401 Unauthorized
The token doesn't authorize the operation403 Forbidden
The build can't find something404 Not Found
The deployment conflicts with stored files409 Conflict
The deployment is rejected400 Bad Request or 413 Payload Too Large
The repository is unavailable503 Service Unavailable with Retry-After

A range request outside the file gets a 416 Range Not Satisfiable response with the file's size in Content-Range. Request the full file instead.