2

Java プロジェクトで Maven アーティファクトの依存関係を解決するために Aether を使用しています。直接的な依存関係 (推移性なし) を見つけて、それらを 1 つの解決済みアーティファクトにしたいと考えています。

シュリンクラップを使用する場合、次のようにします

Resolver.resolve(mavenArtifact).withoutTransitivity().asSingleResolvedArtifact();

推移性のない依存関係を見つけるために、次のものがあります

RepositorySystem repoSystem = newRepositorySystem();
                RepositorySystemSession session = newSession( repoSystem );
                Artifact artifact = new DefaultArtifact(serviceJar.getCoordinate() );


                        ArtifactDescriptorRequest descriptorRequest = new ArtifactDescriptorRequest();
                        descriptorRequest.setArtifact( artifact );
                        descriptorRequest.setRepositories(new ArrayList<RemoteRepository>( Arrays.asList( newCentralRepository() ) ));
                        ArtifactDescriptorResult descriptorResult = repoSystem.readArtifactDescriptor( session, descriptorRequest );
                        descriptorResult.getDependencies();

                        }
private static RepositorySystem newRepositorySystem()
{
    DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
    locator.addService( RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class );
    locator.addService( TransporterFactory.class, FileTransporterFactory.class );
    locator.addService( TransporterFactory.class, HttpTransporterFactory.class );

    return locator.getService( RepositorySystem.class );
}

private static RepositorySystemSession newSession( RepositorySystem system )
{
    DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
    LocalRepository localRepo = new LocalRepository( "/tmp" );
    session.setLocalRepositoryManager( system.newLocalRepositoryManager( session, localRepo ));
    return session;
}
public static List<RemoteRepository> newRepositories( RepositorySystem system, RepositorySystemSession session )
{
    return new ArrayList<RemoteRepository>( Arrays.asList( newCentralRepository() ) );
}

private static RemoteRepository newCentralRepository()
{
    return new RemoteRepository.Builder( "central", "default", "http://central-repo/" ).build();
}

これにより、すべての依存関係のリストが得られます。これらの依存関係の単一の jar を取得するにはどうすればよいですか? エーテルを使用してこれをどのように達成できますか? これら 2 つのライブラリの違いに関するドキュメントはありますか? 言い換えれば、Aether の「MavenResolvedartifact」(shrinkwrap など) に相当するものは何ですか? 生のJavaを使用して単一のjarに変換できるようにするには?

4

0 に答える 0