получить все зависимости для проекта Maven - PullRequest
2 голосов
/ 25 мая 2011

привет Есть ли простой способ получить все зависимости для проекта maven, используя Java (не консоль mvn) или какой алгоритм используется в mvn? Спасибо

Я нашел модель (org.apache.maven.model) Приведенный ниже код работает, пока не найдет переменную (например, '<' version> $ {mavenVersion} '<' / version>)

    System.out.println("dependency" + d.getArtifactId());
        if(d.isOptional()){
            return;
        }
        if(d.getVersion()==null){
            if(mod.getParent()!=null){

            try{

                MavenArtifact mart=new MavenArtifact();
                mart.setArtifactId(mod.getParent().getArtifactId());
                mart.setGroupId(mod.getParent().getGroupId());
                mart.setVersion(mod.getParent().getVersion());
                mart.setRepositoryUrl(mA.getRepositoryUrl());
                Model fMod = getModelFromPom(mart, p);
                if(fMod.getDependencyManagement()!=null){
                    for (Dependency dep : fMod.getDependencyManagement().getDependencies()) {
                        if(dep.getArtifactId().equals(d.getArtifactId())&dep.getGroupId().equals(d.getGroupId())){
                            getDependency(fMod, mart, p, dep);
                        }
                    }

                    for (Dependency dep : fMod.getDependencies()) {
                        if(dep.getArtifactId().equals(d.getArtifactId())&dep.getGroupId().equals(d.getGroupId())){
                            getDependency(fMod, mart, p, dep);
                        }
                    }
                }}


                catch(Exception e){
                    e.printStackTrace();
                    view.showWarning("Could not find: groupId:"
                            + d.getGroupId() + " artifactId"
                            + d.getArtifactId() + " version:"
                            + d.getVersion());
                }
            }else{
                view.showWarning("Could not find: groupId:"
                        + d.getGroupId() + " artifactId"
                        + d.getArtifactId() + " version:"
                        + d.getVersion());


            }
        }else{
        MavenArtifact m = proxy.findDependency(d.getGroupId(), d
                .getArtifactId(), d.getVersion());

        if (m == null) {
            view.showWarning("Could not find: groupId:"
                    + d.getGroupId() + " artifactId"
                    + d.getArtifactId() + " version:"
                    + d.getVersion());

            return;
        }
        importMavenArtifact(m, p);



Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Прочтите исходный код подключаемого модуля maven, если вы хотите соответствовать поведению 2.x. Если вам нужно соответствовать 3.x, я думаю, вы должны узнать об эфире.

1 голос
/ 28 октября 2012

Попробуйте использовать jcabi-aether , который является оберткой вокруг эфира.Сначала вам нужно получить список всех зависимостей проекта:

List<Artifact> deps = this.project.getDependencies();

Затем для каждой из них вы можете получить список всех переходных зависимостей:

File repo = this.session.getLocalRepository().getBasedir();
Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
  new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
  JavaScopes.RUNTIME
);

Iможет быть не прав в деталях, но в целом это так и должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...