Jakub Chrzanowski
09/29/2023, 1:49 PMdependencies {
intellijPlatformLocal("/Users/hsz/Applications/IntelliJ IDEA <http://Ultimate.app|Ultimate.app>") // << using this helper
intellijPlatformSources("com.jetbrains.intellij.idea:ideaIC:2023.3:sources)
}
it created an Ivy XML file:
<ivy-module version="2.0" xmlns:m="<https://ant.apache.org/ivy/maven>">
<configurations>
<conf name="default" visibility="public"/>
<conf name="sources" visibility="public"/>
</configurations>
<info module="IU" organisation="intellijPlatformLocal" revision="2023.3"/>
<publications>
<artifact conf="default" name="/Users/hsz/Applications/IntelliJ IDEA Ultimate.app/Contents" type="directory"/>
</publications>
</ivy-module>
Then, a registered transformer processes this dependency with a directory
artifact, like:
@DisableCachingByDefault(because = "Not worth caching")
abstract class CollectorTransformer : TransformAction<CollectorTransformer.Parameters> {
interface Parameters : TransformParameters {
@get:CompileClasspath
val sourcesClasspath: ConfigurableFileCollection
}
@get:Classpath
@get:InputArtifact
abstract val inputArtifact: Provider<FileSystemLocation>
override fun transform(outputs: TransformOutputs) {
val input = inputArtifact.get().asPath
input.findSuitableJars().forEach {
outputs.file(it)
}
parameters.sourcesClasspath.forEach {
it.copyTo(outputs.file(it.name))
}
}
}
This basically works great, except the sources
part. You can see I’m using sourcesClasspath
, which (optionally) receives artifacts from the intellijPlatformSources
configuration, and contains the ideaIC-2023.3-sources.jar
available in another location (Gradle cache).
This sources Jar is captured properly, and added to the artifacts list.
The problem is that it goes to Classes, not Sources (see the screenshot).
I’m not aware of sources jar path in advance, as it doesn’t belong to /Users/hsz/Applications/IntelliJ IDEA <http://Ultimate.app|Ultimate.app>
but i.e. /Users/hsz/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIC/2023.2/5bcf969924aafaa0d1b4d4602ff824251b1004f6/ideaIC-2023.2-sources.jar
— and later it’s copied to /Users/hsz/.gradle/caches/transforms-3/70f6a793757740656f4d5f680933766d/transformed/ideaIC-2023.2-sources.jar
Do you have any idea how to make this sources Jar correctly recognized?