Фильтр артефактов плагина Maven: несущественные зависимости - PullRequest
1 голос
/ 21 января 2012

Я разрабатываю плагин Maven и использую объект MavenProject для доступа к моим зависимостям с помощью project.getDependencyArtifacts(), но это дает мне весь jar, даже тестовый только jar.

Есть ли какой-нибудь метод, чтобы отфильтровать все файлы без времени выполнения? Если я просто получу область действия и сравню для scope.equals("runtime"), я выкину компиляцию и другие важные зависимости.

1 Ответ

1 голос
/ 22 января 2012

Я также не нашел существующего метода для этого, поэтому я использую следующую логику. Это плагин, создающий настраиваемое ухо, который добавляет необходимые зависимости в XML-файл и включает их в архив. Он использует getArtifacts вместо getDependencyArtifacts, так как меня также интересуют транзитивные зависимости.

    Collection<Artifact> dependencies = new ArrayList<Artifact>();
    dependencies.addAll(project.getArtifacts());
    for (Iterator<Artifact> it=dependencies.iterator(); it.hasNext(); ) {
        Artifact dependency = it.next();
        String scope = dependency.getScope();
        String type = dependency.getType();
        if (dependency.isOptional() || !"jar".equals(type) || "provided".equals(scope) || "test".equals(scope) || "system".equals(scope)) {
            getLog().debug("Pruning dependency " + dependency);
            it.remove();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...