Skip to content

Commit

Permalink
feat: resolve conflict by nearest-latest-strategy
Browse files Browse the repository at this point in the history
  • Loading branch information
teletha committed Jan 5, 2023
1 parent 438bfab commit 606b55e
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/main/java/bee/Bee.java
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ public void execute() {
* @param tasks A list of task commands
*/
public static void main(String... tasks) {
if (tasks.length == 0) tasks = new String[] {"ide"};
if (tasks.length == 0) tasks = new String[] {"install"};

System.exit(new Bee().execute(BeeOption.parse(tasks)));
}
Expand Down
14 changes: 6 additions & 8 deletions src/main/java/bee/api/Repository.java
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,6 @@ private static final void addRemoteRepository(String name, String url) {
session.setCache(new DefaultRepositoryCache());
session.setResolutionErrorPolicy(new SimpleResolutionErrorPolicy(ResolutionErrorPolicy.CACHE_ALL, ResolutionErrorPolicy.CACHE_ALL));
session.setConfigProperty("maven.artifact.threads", 24);
// session.setConfigProperty("aether.dependencyCollector.impl", "bf");
// session.setConfigProperty("aether.conflictResolver.verbose", true);
session.setOffline(BeeOption.Offline.value());

// event listener
Expand Down Expand Up @@ -251,14 +249,18 @@ private Set<Library> collectDependency(Project project, Set<Scope> scopes, Set<L
CollectRequest request = new CollectRequest(null, remoteRepositories());
for (Library library : libraries) {
if (scope.accept(library.scope.id)) {
request.addDependency(new Dependency(library.artifact, library.scope.id));
// spcify the latest version
Artifact artifact = library.artifact;
if (artifact.getVersion().equals("LATEST")) {
artifact = artifact.setVersion("[" + resolveLatestVersion(library) + ",)");
}
request.addDependency(new Dependency(artifact, library.scope.id));
}
}

try {
DependencyResult result = system.resolveDependencies(session, new DependencyRequest(request, (node, parents) -> {
List<DependencyNode> list = I.signal(parents).startWith(node).skip(p -> p.getArtifact() == null).toList();

return list.isEmpty() || list.stream().allMatch(n -> {
return scope.accept(n.getDependency().getScope());
});
Expand All @@ -272,10 +274,6 @@ private Set<Library> collectDependency(Project project, Set<Scope> scopes, Set<L
}
}

System.out.println("OKOKO");
for (Library library : set) {
System.out.println(library);
}
return set;
}

Expand Down
4 changes: 2 additions & 2 deletions src/project/java/bee/Project.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
*/
package bee;

import static bee.api.License.MIT;
import static bee.api.License.*;

import javax.lang.model.SourceVersion;

Expand Down Expand Up @@ -41,7 +41,7 @@ public class Project extends bee.api.Project {
require("org.apache.maven.resolver", "maven-resolver-util");
require("org.apache.maven.resolver", "maven-resolver-impl");
require("org.apache.maven.resolver", "maven-resolver-connector-basic");
require("org.apache.maven.resolver", "maven-resolver-transport-http");
// require("org.apache.maven.resolver", "maven-resolver-transport-http");

// LOGGER
require("org.slf4j", "slf4j-nop");
Expand Down
11 changes: 8 additions & 3 deletions src/test/java/bee/api/DownloadTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
*/
package bee.api;

import java.util.Set;

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

Expand All @@ -17,6 +20,7 @@
import bee.UserInterface;
import psychopath.Locator;

@Disabled
class DownloadTest {

@RegisterExtension
Expand All @@ -28,12 +32,13 @@ void testName() {
// project.require("org.openjfx", "javafx-graphics", "18-ea+9");
// project.require("org.openjfx", "javafx-web", "18-ea+9");
// project.require("org.apache.maven", "maven-core", "3.8.4");
project.require("com.github.teletha", "sinobu");
project.require("com.github.teletha", "psychopath");

Repository repository = new Repository(project);
repository.setLocalRepository(Locator.directory(room.root));

repository.collectDependency(project, Scope.Compile);
Set<Library> collectDependency = repository.collectDependency(project, Scope.Compile, Scope.Annotation);
for (Library library : collectDependency) {
System.out.println(library);
}
}
}

0 comments on commit 606b55e

Please sign in to comment.