Sam
05/04/2022, 12:44 PMkotlin("jvm")
plugin automatically apply the java-library
plugin? I'm sure I remember reading that somewhere but I can't find a reference for it. I'm trying to debug an issue where I'm getting intermittent (!) "unresolved reference" errors when pulling in another module as an api
dependency 😢 (both modules are libraries, consumed by a third separate module)tapchicoma
05/04/2022, 12:55 PMJavaLibraryPlugin
but JavaPlugin
(JavaLibraryPlugin
applies JavaPlugin
internally)Sam
05/04/2022, 12:57 PMbuild.gradle.kts
file is able to add dependencies to the api
configuration. I thought the api
configuration was only available if the java-library
plugin was added?Sam
05/04/2022, 12:58 PMtapchicoma
05/04/2022, 12:59 PMSam
05/04/2022, 1:01 PMtapchicoma
05/04/2022, 1:06 PMJavaLibraryPlugin
plugins adds api
configuration in case of Java only project. But Kotlin plugin itself, when applied, creates api*
configurationsSam
05/04/2022, 1:08 PMSam
05/04/2022, 1:09 PMA feature of theDo you know if that's also true when building a Kotlin library? (Either with or without theplugin is that projects which consume the library only require the classes folder for compilation, instead of the full JAR.java-library
java-library
plugin applied)Sam
05/04/2022, 1:10 PMjava-library
plugin. So that suggests the java-library plugin is still useful in some way.tapchicoma
05/04/2022, 1:40 PMjava-library
as well. Probably example was not updated for some timeSam
05/04/2022, 1:47 PMjava-library
plugin to a Kotlin project would do anything at all? Or would it have no effect?Chris Lee
05/04/2022, 1:54 PMSam
05/04/2022, 1:56 PMjava-library
plugin do in the case of a Kotlin project? (If it makes a difference, my use case is a multi-project build, so no published artifacts)Chris Lee
05/04/2022, 2:01 PMSam
05/04/2022, 2:07 PMapi
configuration exists whenever the java
plugin is applied, but its behaviour is different if the java-library
plugin is also applied?Chris Lee
05/04/2022, 2:09 PMapi
is performed by the Java library plugin:
public static Configuration addApiToSourceSet(SourceSet sourceSet, ConfigurationContainer configurations) {
Configuration apiConfiguration = maybeCreateInvisibleConfig(
configurations,
sourceSet.getApiConfigurationName(),
"API dependencies for " + sourceSet + ".",
false
);
Configuration compileOnlyApiConfiguration = maybeCreateInvisibleConfig(
configurations,
sourceSet.getCompileOnlyApiConfigurationName(),
"Compile only API dependencies for " + sourceSet + ".",
false
);
Configuration apiElementsConfiguration = configurations.getByName(sourceSet.getApiElementsConfigurationName());
apiElementsConfiguration.extendsFrom(apiConfiguration, compileOnlyApiConfiguration);
Configuration implementationConfiguration = configurations.getByName(sourceSet.getImplementationConfigurationName());
implementationConfiguration.extendsFrom(apiConfiguration);
Configuration compileOnlyConfiguration = configurations.getByName(sourceSet.getCompileOnlyConfigurationName());
compileOnlyConfiguration.extendsFrom(compileOnlyApiConfiguration);
return apiConfiguration;
}
Chris Lee
05/04/2022, 2:11 PMtapchicoma
05/04/2022, 2:11 PMJavaPlugin
doesn't add api
configurations. And I am still sure you don't need to add java-library
plugin when Kotlin plugin is applied.Chris Lee
05/04/2022, 2:16 PMapi
configuration:
JvmPluginsHelper.addApiToSourceSet(sourceSet, configurations);
andylamax
05/11/2022, 7:17 AM