curently Ich schreibe ein Gradle-Plugin, und ich muss eine Maven Abhängigkeit programmatisch in einer bestimmten Aufgabe hinzufügen und herunterladen.Gradle Plugin Download-Abhängigkeit programmgesteuert
I ausgewertet DependencyHandler
und ArtifactResolutionQuery
aber ich kann nicht herausfinden, wo und wie eine Abhängigkeit hinzuzufügen und lösen es in mavenCentral Repository
für Maven Similarcoding sieht ziemlich einfach
Artifact artifact = artifactFactory.createArtifactWithClassifier(groupId, artifactId, version, type, classifier);
artifactResolver.resolve(artifact, remoteRepositories, localRepository);
Also ich denke,/Hoffnung gibt es eine ähnlich einfache Weise in gradle und ich bin es einfach nicht
Grüße Mathias
sehenUpdate 1:
Also hier ist ein paar der Sachen, die ich versuchte, wild c & p aus verschiedenen Versuchen. lohnt es sich, zu sagen, dass die Abhängigkeit ich den Klassifikator ZIP herunterladen möchten hat, so normal in meinem build.gradle ich schreibe
compile 'group:artifact:[email protected]
ComponentIdentifier componentIdentifier = new DefaultModuleComponentIdentifier("com.sap.cloud",
"neo-java-web-sdk", "3.39.10");
System.out.println("CompIdentifier = " + componentIdentifier.getDisplayName());
//getProject().getDependencies().add("compile", componentIdentifier.getDisplayName());
Configuration configuration = getProject().getConfigurations().getByName("compile");
org.gradle.api.artifacts.Dependency dep2 = new DefaultExternalModuleDependency("com.sap.cloud",
"neo-java-web-sdk", "3.39.10");
boolean depList = configuration.getDependencies().add(dep2);
//
configuration.forEach(file -> {
getProject().getLogger().lifecycle("Found project dependency @ " + file.getAbsolutePath());
});
Set<File> files = configuration.resolve();
for (File file2 : files) {
System.out.println("Files: " + file2.getName());
}
DependencyHandler dep = getProject().getDependencies();
ComponentModuleMetadataHandler modules = dep.getModules();
ArtifactResolutionQuery a = getProject().getDependencies().createArtifactResolutionQuery()
.forComponents(componentIdentifier).withArtifacts(MavenModule.class, SourcesArtifact.class);
ArtifactResolutionResult r = a.execute();
Set<ComponentArtifactsResult> set = r.getResolvedComponents();
Set<ComponentResult> c = r.getComponents();
Wie wäre es mit dem Beispiel für die ['ArtifactResolutionQuery'] (https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.query.ArtifactResolutionQuery.html)? –
@ lu.koerfer meine Frage aktualisiert. –