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