1

この例に従って、必要な依存関係をAbtractMavenLifecyleParticipantに注入しました。

'afterProjectsRead'は完全に呼び出されますが、repoSystem、repoSession、およびremoteReposは常に'null'です。

AbstractMavenLifecyleParticipant内からこれらのオブジェクトを取得するにはどうすればよいですか?

import org.apache.maven.AbstractMavenLifecycleParticipant;
import org.apache.maven.MavenExecutionException;
import org.apache.maven.execution.MavenSession;
import org.codehaus.plexus.component.annotations.Component;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.repository.RemoteRepository;

@Component(role = AbstractMavenLifecycleParticipant.class, hint = "skipper")
public class ModuleSkipperLifecycleParticipant extends AbstractMavenLifecycleParticipant {

    /**
     * @component
     */
    private RepositorySystem repoSystem;

    /**
     * @parameter default-value="${repositorySystemSession}"
     * @readonly
     */
    private RepositorySystemSession repoSession;

    /**
     * @parameter default-value="${project.remotePluginRepositories}"
     * @readonly
     */
    private List<RemoteRepository> remoteRepos;

    @Override
    public void afterProjectsRead(MavenSession session) throws MavenExecutionException {
        super.afterProjectsRead(session);

        System.out.println("repoSession: " + repoSession);
        System.out.println("repoSystem: " + repoSystem);
        System.out.println("remoteRepos: " + remoteRepos);

    }
}
4

1 に答える 1

1

これがjcabi-aetherでの方法です:

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

自分で作成する代わりに、ライブラリを使用できるかもしれません。

于 2012-08-27T19:43:38.207 に答える