After looking around at various different examples and code, I cobbled together this, which seems to work:
public List<Artifact> fetchArtifactDependencies(final RepositorySystemSession session,
final Artifact artifact,
final DependencyFilter dependencyFilter)
throws RepositoryException {
final CollectRequest collectRequest = new CollectRequest();
collectRequest.setRoot(new Dependency(artifact, "compile"));
collectRequest.addRepository([repository]);
final DependencyNode node = repositorySystem.collectDependencies(session, collectRequest)
.getRoot();
final DependencyRequest dependencyRequest = new DependencyRequest();
dependencyRequest.setRoot(node);
dependencyRequest.setFilter(dependencyFilter);
final DependencyResult dependencyResult = repositorySystem.resolveDependencies(session,
dependencyRequest);
final List<ArtifactResult> artifactResults = dependencyResult.getArtifactResults();
final List<Artifact> results = new ArrayList<>(artifactResults.size());
CollectionUtils.collect(artifactResults, new Transformer<ArtifactResult, Artifact>() {
@Override
public Artifact transform(final ArtifactResult input) {
return input.getArtifact();
}
}, results);
return results;
}