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