jpobst / Prototype.Android.MavenBindings

Prototype of MSBuild tasks to facilitate binding of Java libraries from Maven repositories
MIT License
5 stars 3 forks source link

Transitive NuGet packages not considered for Maven dependency resolution #11

Closed jpobst closed 10 months ago

jpobst commented 10 months ago

It would appear that transitive NuGet packages are not considered when ensuring POM dependencies are met.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net7.0-android</TargetFramework>
    <SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>
    <RootNamespace>emoji_picker</RootNamespace>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Xamarin.AndroidX.Emoji2" Version="1.4.0.2" />
    <PackageReference Include="XamPrototype.Android.MavenBinding.Tasks" Version="0.0.11" />
  </ItemGroup>
  <ItemGroup>
  <AndroidMavenLibrary Include="androidx.emoji2:emoji2-emojipicker" Version="1.4.0" Repository="Google" />
</ItemGroup>
</Project>
jpobst commented 10 months ago

On second thought, maybe this is the desired behavior.

These libraries are direct dependencies of the Java package, they probably need to be direct dependencies of the NuGet package.

For example, my packages needs AndroidX.Core 1.9.0 and one of my other dependencies provides it, and I build and publish my package. A future update to the "other dependency" no longer needs AndroidX.Core so it removes the dependency. Trying to use my library with that updated dependency will cause AndroidX.Core to be missing from the NuGet dependency graph.