Как узнать местоположение локального репозитория из плагина Maven 3.0? - PullRequest
8 голосов
/ 15 сентября 2011

Как получить местоположение локального хранилища (URI) из плагина Maven 3.x?

Ответы [ 4 ]

6 голосов
/ 15 сентября 2011

Используйте эфир, как описано в этом сообщении в блоге .

/**
 * The current repository/network configuration of Maven.
 *
 * @parameter default-value="${repositorySystemSession}"
 * @readonly
 */
private RepositorySystemSession repoSession;

теперь получите местный репо через RepositorySystemSession.getLocalRepository():

LocalRepository localRepo = repoSession.getLocalRepository();

LocalRepository имеет метод getBasedir(), который, вероятно, вам нужен.

0 голосов
/ 27 февраля 2019

Этот работал для меня в Maven v3.6.0:

@Parameter(defaultValue = "${localRepository}", readonly = true, required = true)
private ArtifactRepository localRepository;
0 голосов
/ 14 февраля 2019

Вы можете просто получить местоположение локального репозитория из настроек:

@Parameter( defaultValue = "${settings}", readonly = true )
private Settings settings;

public void execute() throws MojoExecutionException {
  final File localRepository = new File(settings.getLocalRepository());

  ...
}

Это работает в Maven-3x.

0 голосов
/ 29 марта 2018

@ Шон Патрик Флойд дал твердый ответ.

Это решение не требует внедрения свойств в поля вашего экземпляра.

@Override
public void execute() throws MojoExecutionException {
   MavenProject project=(MavenProject)getPluginContext().get("project");
   Set<Artifact> arts=project.getDependencyArtifacts();
   Set<String> localRepoSet = new HashSet<>();
   for (Artifact art : arts) {
        if (art.getScope().equals(Artifact.SCOPE_COMPILE)) {
            Path path = Paths.get(art.getFile().getAbsolutePath());

            String removal = art.getGroupId().replace(".", "/") + "/" + art.getArtifactId() + "/"
                    + art.getVersion();
            String localRepo = path.getParent().toAbsolutePath().toString().replace(removal, "");
            localRepoSet.add(localRepo);
        }
    }
}

Вы можете получить возможные местоположения всех ваших прямых зависимостей.

Протестировано в Maven 3.X.X

...