mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
change external annotations artifact naming convention IDEA-201598
Instead of 'annotations' classifier, use modified artifactsId in form of <artifactId>-annotations This is required to resolve annotation artifacts revision numbers separately from revision of original artifact
This commit is contained in:
@@ -21,7 +21,7 @@ import java.util.EnumSet;
|
||||
|
||||
public enum ArtifactKind {
|
||||
ARTIFACT("", "jar"), SOURCES("sources", "jar"), JAVADOC("javadoc", "jar"),
|
||||
ANNOTATIONS("annotations", "zip"), AAR_ARTIFACT("", "aar");
|
||||
ANNOTATIONS("", "zip"), AAR_ARTIFACT("", "aar");
|
||||
|
||||
private final String myClassifier;
|
||||
private final String myExtension;
|
||||
|
||||
+2
-1
@@ -220,8 +220,9 @@ public class ArtifactRepositoryManager {
|
||||
Artifact newArtifact = artifact.setVersion(result.getHighestVersion().toString());
|
||||
requests.add(new ArtifactRequest(newArtifact, Collections.unmodifiableList(myRemoteRepositories), null));
|
||||
}
|
||||
} else {
|
||||
requests.add(new ArtifactRequest(artifact, Collections.unmodifiableList(myRemoteRepositories), null));
|
||||
}
|
||||
requests.add(new ArtifactRequest(artifact, Collections.unmodifiableList(myRemoteRepositories), null));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-2
@@ -81,10 +81,18 @@ class ExternalAnnotationsRepositoryResolver : ExternalAnnotationsArtifactsResolv
|
||||
|
||||
private fun extractDescriptor(mavenId: String?,
|
||||
library: Library): JpsMavenRepositoryLibraryDescriptor? = when {
|
||||
mavenId != null -> JpsMavenRepositoryLibraryDescriptor(mavenId, false, emptyList())
|
||||
mavenId != null -> JpsMavenRepositoryLibraryDescriptor(patchArtifactId(mavenId), false, emptyList())
|
||||
library is LibraryEx -> (library.properties as? RepositoryLibraryProperties)
|
||||
?.run { JpsMavenRepositoryLibraryDescriptor(groupId, artifactId, version) }
|
||||
?.run { JpsMavenRepositoryLibraryDescriptor(groupId, "$artifactId-annotations", version) }
|
||||
else -> null
|
||||
}
|
||||
|
||||
private fun patchArtifactId(mavenId: String): String {
|
||||
val components = mavenId.split(':', limit = 3)
|
||||
if (components.size < 3) {
|
||||
return mavenId
|
||||
}
|
||||
return "${components[0]}:${components[1]}-annotations:${components[2]}"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+22
-1
@@ -91,6 +91,27 @@ class ExternalAnnotationsRepositoryResolverTest: UsefulTestCase() {
|
||||
assertTrue(library.getFiles(AnnotationOrderRootType.getInstance()).isNotEmpty())
|
||||
}
|
||||
|
||||
|
||||
@Test fun `test select annotations artifact when newer library artifacts are available`() {
|
||||
val resolver = ExternalAnnotationsRepositoryResolver()
|
||||
val libraryTable = LibraryTablesRegistrar.getInstance().libraryTable
|
||||
val library = WriteAction.compute<Library, RuntimeException> { libraryTable.createLibrary("NewLibrary") }
|
||||
|
||||
RemoteRepositoriesConfiguration.getInstance(myProject).repositories = listOf(myTestRepo)
|
||||
|
||||
MavenRepoFixture(myMavenRepo).apply {
|
||||
addLibraryArtifact(version = "1.0")
|
||||
addAnnotationsArtifact(version = "1.0")
|
||||
addAnnotationsArtifact(version = "1.0-an1")
|
||||
addLibraryArtifact(version = "1.1")
|
||||
generateMavenMetadata("myGroup", "myArtifact")
|
||||
}
|
||||
|
||||
resolver.resolve(myProject, library, "myGroup:myArtifact:1.1")
|
||||
assertTrue("Annotations root is not attached to library", library.getFiles(AnnotationOrderRootType.getInstance()).isNotEmpty())
|
||||
}
|
||||
|
||||
|
||||
@Test fun `test annotations resolution overrides existing roots`() {
|
||||
val resolver = ExternalAnnotationsRepositoryResolver()
|
||||
val libraryTable = LibraryTablesRegistrar.getInstance().libraryTable
|
||||
@@ -109,7 +130,7 @@ class ExternalAnnotationsRepositoryResolverTest: UsefulTestCase() {
|
||||
}
|
||||
|
||||
resolver.resolve(myProject, library, "myGroup:myArtifact:1.0")
|
||||
assertTrue(library.getUrls(AnnotationOrderRootType.getInstance()).single().endsWith("myGroup/myArtifact/1.0-an1/myArtifact-1.0-an1-annotations.zip!/"))
|
||||
assertTrue(library.getUrls(AnnotationOrderRootType.getInstance()).single().endsWith("myGroup/myArtifact-annotations/1.0-an1/myArtifact-annotations-1.0-an1.zip!/"))
|
||||
}
|
||||
|
||||
private fun <T> getResult(promise: Promise<T>): T? {
|
||||
|
||||
@@ -62,7 +62,7 @@ class JarRepositoryManagerTest : UsefulTestCase() {
|
||||
generateMavenMetadata("myGroup", "myArtifact")
|
||||
}
|
||||
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact", "1.0")
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact-annotations", "1.0")
|
||||
val promise: Promise<MutableList<OrderRoot>> = JarRepositoryManager.loadDependenciesAsync(myProject, description, setOf(ArtifactKind.ANNOTATIONS),
|
||||
listOf(myTestRepo), null)
|
||||
val result: List<OrderRoot>? = getResultingRoots(promise)
|
||||
@@ -79,7 +79,7 @@ class JarRepositoryManagerTest : UsefulTestCase() {
|
||||
generateMavenMetadata("myGroup", "myArtifact")
|
||||
}
|
||||
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact", "1.0",
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact-annotations", "1.0",
|
||||
false, emptyList())
|
||||
val promise: Promise<MutableList<OrderRoot>> = JarRepositoryManager.loadDependenciesAsync(myProject, description, setOf(ArtifactKind.ANNOTATIONS),
|
||||
listOf(myTestRepo), null)
|
||||
@@ -99,7 +99,7 @@ class JarRepositoryManagerTest : UsefulTestCase() {
|
||||
}
|
||||
|
||||
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact", "1.0")
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact-annotations", "1.0")
|
||||
val promise: Promise<MutableList<OrderRoot>> = JarRepositoryManager.loadDependenciesAsync(myProject, description, setOf(ArtifactKind.ANNOTATIONS),
|
||||
listOf(myTestRepo), null)
|
||||
val result: List<OrderRoot>? = getResultingRoots(promise)
|
||||
@@ -121,7 +121,7 @@ class JarRepositoryManagerTest : UsefulTestCase() {
|
||||
name
|
||||
}
|
||||
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact", "2.5")
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact-annotations", "2.5")
|
||||
val promise: Promise<MutableList<OrderRoot>> = JarRepositoryManager.loadDependenciesAsync(myProject, description, setOf(ArtifactKind.ANNOTATIONS),
|
||||
listOf(myTestRepo), null)
|
||||
val result: List<OrderRoot>? = getResultingRoots(promise)
|
||||
@@ -145,7 +145,7 @@ class JarRepositoryManagerTest : UsefulTestCase() {
|
||||
name
|
||||
}
|
||||
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact", "[2.0, 2.1)")
|
||||
val description = JpsMavenRepositoryLibraryDescriptor("myGroup", "myArtifact-annotations", "[2.0, 2.1)")
|
||||
val promise: Promise<MutableList<OrderRoot>> = JarRepositoryManager.loadDependenciesAsync(myProject, description, setOf(ArtifactKind.ANNOTATIONS),
|
||||
listOf(myTestRepo), null)
|
||||
val result: List<OrderRoot>? = getResultingRoots(promise)
|
||||
|
||||
@@ -5,31 +5,43 @@ import java.io.File
|
||||
|
||||
class MavenRepoFixture(private val myMavenRepo: File) {
|
||||
|
||||
public fun addAnnotationsArtifact(group: String = "myGroup",
|
||||
artifact: String = "myArtifact",
|
||||
version: String)
|
||||
: String = File(myMavenRepo, "$group/$artifact/$version/$artifact-$version-annotations.zip")
|
||||
.apply {
|
||||
parentFile.mkdirs()
|
||||
writeText("Fake annotations artifact")
|
||||
}.name
|
||||
|
||||
public fun generateMavenMetadata(group: String, artifact: String) {
|
||||
val metadata = File(myMavenRepo, "$group/$artifact/maven-metadata.xml")
|
||||
public fun addLibraryArtifact(group: String = "myGroup",
|
||||
artifact: String = "myArtifact",
|
||||
version: String)
|
||||
: String = File(myMavenRepo, "$group/$artifact/$version/$artifact-$version.jar")
|
||||
.apply {
|
||||
parentFile.mkdirs()
|
||||
}
|
||||
writeText("Fake library artifact")
|
||||
}.name
|
||||
|
||||
val versionsList = metadata.parentFile
|
||||
.listFiles()
|
||||
.asSequence()
|
||||
.filter { it.isDirectory }
|
||||
.map { it.name }
|
||||
.toList()
|
||||
public fun addAnnotationsArtifact(group: String = "myGroup",
|
||||
artifact: String = "myArtifact",
|
||||
version: String)
|
||||
: String = File(myMavenRepo, "$group/$artifact-annotations/$version/$artifact-annotations-$version.zip")
|
||||
.apply {
|
||||
parentFile.mkdirs()
|
||||
writeText("Fake annotations artifact")
|
||||
}.name
|
||||
|
||||
val releaseVersion = versionsList.last()
|
||||
public fun generateMavenMetadata(group: String, artifact: String) {
|
||||
val files = listOf(File(myMavenRepo, "$group/$artifact/maven-metadata.xml"),
|
||||
File(myMavenRepo, "$group/$artifact-annotations/maven-metadata.xml"))
|
||||
for (metadata in files) {
|
||||
metadata.parentFile.mkdirs()
|
||||
val versionsList = metadata.parentFile
|
||||
.listFiles()
|
||||
.asSequence()
|
||||
.filter { it.isDirectory }
|
||||
.map { it.name }
|
||||
.toList()
|
||||
|
||||
metadata.writeText("""
|
||||
if (versionsList.isEmpty()) {
|
||||
continue
|
||||
}
|
||||
|
||||
val releaseVersion = versionsList.last()
|
||||
|
||||
metadata.writeText("""
|
||||
|<?xml version="1.0" encoding="UTF-8"?>
|
||||
|<metadata>
|
||||
| <groupId>$group</groupId>
|
||||
@@ -39,12 +51,13 @@ public fun generateMavenMetadata(group: String, artifact: String) {
|
||||
| <latest>$releaseVersion</latest>
|
||||
| <release>$releaseVersion</release>
|
||||
| <versions>
|
||||
| ${versionsList.joinToString(separator = "\n") { "<version>$it</version>" } }
|
||||
| ${versionsList.joinToString(separator = "\n") { "<version>$it</version>" }}
|
||||
| </versions>
|
||||
| <lastUpdated>20180809190315</lastUpdated>
|
||||
| </versioning>
|
||||
|</metadata>
|
||||
""".trimMargin())
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user