java maven aether

¿Cómo puedes encontrar la última versión de un artefacto maven de Java usando aether?



(2)

El equipo de Aether mantiene una página de demostración con este ejemplo: FindNewestVersion .

Simplificado un poco, esto es a lo que se reduce.

Agregue a su POM las dependencias de Aether:

<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>

Y luego, puedes usarlo así:

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

Esto crea una referencia al repositorio de Maven Central y utiliza los rangos de versión [0,) para especificar que estamos interesados ​​en todas las versiones con un valor máximo ilimitado. Finalmente, se realiza una consulta de rango de versiones y eso nos permite determinar la última versión.

Su documentación es realmente escasa y no pude resolverlo.

Encontré una respuesta parcial here , pero no tiene todo el código.

¿Cómo puedes encontrar la última versión de un artefacto maven de Java usando aether?


Esto es del sitio de demostración y ejemplos de Aether del proyecto. No intenté ejecutarlo, pero debería ser tu respuesta.

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