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

他们的文件非常简陋,我无法弄清楚。

我在这里找到了部分答案,但它没有所有代码。

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

Aether团队维护着一个演示页面,其中包含以下示例: FindNewestVersion

简化了一下,这就是它的归纳。

添加到您的POM Aether依赖项:

   org.eclipse.aether aether-impl ${aetherVersion}   org.eclipse.aether aether-connector-basic ${aetherVersion}   org.eclipse.aether aether-transport-file ${aetherVersion}   org.eclipse.aether aether-transport-http ${aetherVersion}   org.apache.maven maven-aether-provider ${mavenVersion}    1.1.0 3.3.9  

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

 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,)来指定我们对具有无限最大值的所有版本感兴趣。 最后,执行版本范围查询,这使我们能够确定最新版本。

这是来自项目的Aether演示和示例站点。 我没有尝试运行它,但它应该是你的答案。

 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 ) ); }