首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用aether从Java中找到最新版本的maven工件?

如何使用aether从Java中找到最新版本的maven工件?
EN

Stack Overflow用户
提问于 2016-02-19 01:17:37
回答 2查看 1.9K关注 0票数 5

他们的文档真的很少,我无法弄清楚。

我找到了一个部分答案here,但它没有所有的代码。

如何使用aether从Java中找到最新版本的maven工件?

EN

回答 2

Stack Overflow用户

发布于 2016-02-19 02:14:04

以太团队维护了一个演示页面,其中包含这样一个示例:FindNewestVersion

简而言之,这就是它的归结。

将Aether依赖项添加到POM中:

代码语言:javascript
复制
<dependencies>
    <dependency>
        <groupId>org.eclipse.aether</groupId>
        <artifactId>aether-impl</artifactId>
        <version>${aetherVersion}</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.aether</groupId>
        <artifactId>aether-connector-basic</artifactId>
        <version>${aetherVersion}</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.aether</groupId>
        <artifactId>aether-transport-file</artifactId>
        <version>${aetherVersion}</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.aether</groupId>
        <artifactId>aether-transport-http</artifactId>
        <version>${aetherVersion}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-aether-provider</artifactId>
        <version>${mavenVersion}</version>
    </dependency>
</dependencies>
<properties>
    <aetherVersion>1.1.0</aetherVersion>
    <mavenVersion>3.3.9</mavenVersion>
</properties>

然后,您可以像这样使用它:

代码语言:javascript
复制
public static void main(String[] args) {
    RemoteRepository central = new RemoteRepository.Builder("central", "default", "http://repo1.maven.org/maven2/").build();
    RepositorySystem repoSystem = newRepositorySystem();
    RepositorySystemSession session = newSession(repoSystem);
    Artifact artifact = new DefaultArtifact("groupId:artifactId:(0,]");
    VersionRangeRequest request = new VersionRangeRequest(artifact, Arrays.asList(central), null);
    try {
        VersionRangeResult versionResult = repoSystem.resolveVersionRange(session, request);
        System.out.println(versionResult.getHighestVersion());
    } catch (VersionRangeResolutionException e) {
        e.printStackTrace();
    }
}

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("target/local-repo");
    session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo));
    return session;
}

这将创建对Maven Central存储库的引用,并使用版本范围[0,)来指定我们对具有无界最大值的所有版本感兴趣。最后,执行版本范围查询,这使我们能够确定最新版本。

票数 6
EN

Stack Overflow用户

发布于 2016-02-19 02:34:02

这是来自项目的Aether Demonstration and Examples站点。我没有尝试运行它,但它应该是您的答案。

代码语言:javascript
复制
public static void main( String[] args ) throws Exception
{
    System.out.println( "------------------------------------------------------------" );
    System.out.println( FindNewestVersion.class.getSimpleName() );

    RepositorySystem system = Booter.newRepositorySystem();

    RepositorySystemSession session = Booter.newRepositorySystemSession( system );

    Artifact artifact = new DefaultArtifact( "org.eclipse.aether:aether-util:[0,)" );

    VersionRangeRequest rangeRequest = new VersionRangeRequest();
    rangeRequest.setArtifact( artifact );
    rangeRequest.setRepositories( Booter.newRepositories( system, session ) );

    VersionRangeResult rangeResult = system.resolveVersionRange( session, rangeRequest );

    Version newestVersion = rangeResult.getHighestVersion();

    System.out.println( "Newest version " + newestVersion + " from repository "
        + rangeResult.getRepository( newestVersion ) );
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35488167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档