Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Mono.Android] Generate Mono.Android.xml #5253

Merged
merged 14 commits into from
Jan 6, 2021

Conversation

jonpryor
Copy link
Member

@jonpryor jonpryor commented Oct 30, 2020

Fixes: #4789

Context: dotnet/java-interop@7574f16
Context: #5200

What do we want? Updated documentation! Better Bindings!

How do we get that? Uh…

Historically, Xamarin.Android API docs were produced by parsing
Android's HTML documentation from docs-24_r01.zip and converting it
into mdoc(5) documentation via tools/javadoc2mdoc.
The problem is that Google hasn't released an updated docs*.zip
package since API-24 (~6 years ago), and thus our documentation is
woefully out of date.

We could have scraped developer.android.com/reference within that
time frame, but web scraping is annoying, and we'd still have to deal
with the pain of parsing HTML.

There is an alternative, though: with API-30, there is a new sources
package which contains the Java source code used for the API level,
which in turn contains Javadoc source code comments. Previous API
levels similarly contained an android-stubs-src.jar file which
likewise contained Java source code containing Javadoc comments.

The new approach is to:

  1. Update build-tools/xaprepare to install the sources package.

  2. Use java-source-tool.jar to parse the Java source code,
    creating an android-javadoc.xml file.

  3. Update generator to consume android-javadoc.xml and
    convert the Javadocs into C# XML documentation comments.

  4. Update src/Mono.Android so that generator will emit
    C# XML doc comments, and then produce a Mono.Android.xml file.

The result is a Mono.Android.xml file which contains imported
Android Javadoc documentation, e.g.

<doc>
  <assembly><name>Mono.Android</name></assembly>
  <members>
    <member name="T:Java.Lang.Object">
      <summary>Class <c>Object</c> is the root of the class hierarchy.</summary>
      <remarks>
        <para>Class <c>Object</c> is the root of the class hierarchy.
…

"Later", Mono.Android.xml can then be used alongside
mdoc update --import=Mono.Android.xml to update our published
API documentation.

Generation of Mono.Android.xml is disabled by default on CI PR
builds, as generating Mono.Android.xml increases src/Mono.Android
build times by an unacceptable amount.

With the inclusion of java-source-tools.jar, we can now fix the
TODO mentioned in commit 380e95e, and re-add support for
@(JavaSourceJar) when running under JDK 11.

Update Xamarin.Android.Bindings.Core.targets so that before
invoking generator, we first run java-source-utils.jar on the
@(JavaSourceJar) files, producing Javadoc XML files.
The <BindingsGenerator/> task in turn is updated to accept a new
BindingsGenerator.JavadocXml property, which is converted into a
generator --with-javadoc-xml=FILE option.

The @(JavaSourceJar) item group is "extended" to support the
following item metadata:

  • %(CopyrightFile): A path to a file that contains copyright
    information for the Javadoc contents, which will be appended to
    all imported documentation.

  • %(UrlPrefix): A URL prefix to support linking to online
    documentation within imported documentation.

  • %(UrlStyle): The "style" of URLs to generate when linking to
    online documentation. Only one style is currently supported:
    developer.android.com/reference@2020-Nov.

For .NET 6 ("One .NET") integration purposes, provide a default item
group of @(JavaSourceJar) which includes **\*-source*.jar and
**\*-src.jar. This will allow dotnet build of an "Android Java
Library Binding" project (dotnet new android-bindinglib) to
automatically process .java source code for documentation
translation purposes.

Add a new $(AndroidJavadocVerbosity) MSBuild property, which
controls "how much" of the Javadoc comments are converted into C#
XML documentation. Supported values are:

  • full: Convert as much Javadoc as possible.
  • intellisense: Only emit XML documentation for IDE-useful
    constructs: summary, parameters, returns, exceptions.

The difference between the two is build time impact: full takes
longer, and thus may not always be desirable.

Finally, add a new $(_UseLegacyJavadocImport) MSBuild property
which disables use of java-source-utils.jar for Javadoc importing,
and instead use the previous, legacy, doesn't work on JDK 11,
approach of using javadoc and HTML parsing. This shouldn't be
needed, but just in case it is needed…

@jonpryor
Copy link
Member Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@jonpryor jonpryor force-pushed the jonp-mono.android-xml-docs branch 2 times, most recently from b886d61 to 52c9996 Compare November 2, 2020 22:54
@jonpryor
Copy link
Member Author

jonpryor commented Nov 2, 2020

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@jonpryor
Copy link
Member Author

Current local build times…

% time msbuild /v:diag /restore > b.txt
msbuild /v:diag /restore > b.txt  1250.71s user 241.59s system 185% cpu 13:25.65 total

% time msbuild /v:diag /restore /p:IncludeAndroidJavadoc=False > b2.txt
msbuild /v:diag /restore /p:IncludeAndroidJavadoc=False > b2.txt  632.16s user 25.03s system 289% cpu 3:47.05 total

It takes ~3.5x longer for me to build Mono.Android.csproj (~4min vs. ~13.5min) with it generating generate the C# XML documentation comments vs. the current system, and this doesn't include how long it takes to run java-source-utils.jar to generate the input android-javadoc.xml file, which is not fast.

I should look into disabling C# doc comments for (1) PR builds, and (2) "down-level" $(TargetFrameworkVersion) values. This should help reduce the build time hit for PR builds.

@jonpryor jonpryor force-pushed the jonp-mono.android-xml-docs branch 2 times, most recently from 2afce7e to d649ce8 Compare November 14, 2020 00:42
@jonpryor
Copy link
Member Author

From the "Argh! Build Times!" department, the make jenkins step on this PR took 1h22min, while on e.g. PR#5311 the make jenkins step took 44min. Only an increase of 38 minutes!

…Ouch.

@jonpryor jonpryor force-pushed the jonp-mono.android-xml-docs branch 7 times, most recently from a060c7e to e90cd10 Compare November 22, 2020 08:25
@jonpryor jonpryor force-pushed the jonp-mono.android-xml-docs branch 3 times, most recently from 1759538 to 7dee454 Compare December 11, 2020 00:38
Fixes: dotnet#4789

Context: dotnet/java-interop#687
Context: dotnet#5200

What do we want?  Updated documentation!

How do we get that?  Uh…

Historically, [Xamarin.Android API docs][0] were produced by parsing
Android's HTML documentation from `docs-24_r01.zip` and converting it
into [**mdoc**(5) documentation][1] via [`tools/javadoc2mdoc`].
The problem is that Google hasn't released an updated `docs*.zip`
package since API-24 (~6 years ago), and thus our documentation is
woefully out of date.

We could have scraped developer.android.com/reference within that
time frame, but web scraping is annoying, and we'd still have to deal
with the pain of parsing HTML.

There is an alternative, though: with API-30, there is a new `sources`
package which contains the Java source code used for the API level,
which in turn contains Javadoc source code comments.  Previous API
levels similarly contained an `android-stubs-src.jar` file which
likewise contained Java source code containing Javadoc comments.

The new approach is to:

 1. Update `build-tools/xaprepare` to install the `sources` package.

 2. Use [`java-source-tool.jar`][2] to parse the Java source code,
    creating an `android-javadoc.xml` file.

 3. [Update `generator`][3] to consume `android-javadoc.xml` and
    convert the Javadocs into [C# XML documentation comments][4].

 4. Update `src/Mono.Android` so that `generator` will emit
    C# XML doc comments, and then produce a `Mono.Android.xml` file.

The result is a `Mono.Android.xml` file which contains imported
Android Javadoc documentation, e.g.

	<doc>
	  <assembly><name>Mono.Android</name></assembly>
	  <members>
	    <member name="T:Java.Lang.Object">
	      <summary>Class <c>Object</c> is the root of the class hierarchy.</summary>
	      <remarks>
	        <para>Class <c>Object</c> is the root of the class hierarchy.
	…

"Later", `Mono.Android.xml` can then be used alongside
[`mdoc update --import=Mono.Android.xml`][5] to update our published
API documentation.

Finally, commit 380e95e, which added support for JDK 11, *broke*
support for `@(JavaSourceJar)` when running under JDK 11, as JDK 11's
Javadoc HTML output differs from what we expect.  With the new
`java-source-utils.jar` and
`generator --with-javadoc-xml=FILE` infrastructure in place, we can
reasonably address this breakage under JDK 11, fixing Issue dotnet#4789:

Update `Xamarin.Android.Bindings.Core.targets` so that before
invoking `generator`, we first run `java-source-utils.jar` on the
`@(JavaSourceJar)` files, producing Javadoc XML files.
The `<BindingsGenerator/>` task in turn is updated to accept a new
`BindingsGenerator.JavadocXml` property, which is converted into a
`generator --with-javadoc-xml=FILE` option.

The `@(JavaSourceJar)` item group is "extended" to support the
following item metadata:

  * `%(CopyrightFile)`: A path to a file that contains copyright
    information for the Javadoc contents, which will be appended to
	all imported documentation.

  * `%(UrlPrefix)`: A URL prefix to support linking to online
    documentation within imported documentation.

  * `%(UrlStyle)`: The "style" of URLs to generate when linking to
    online documentation.  Only one style is currently supported:
    `developer.android.com/reference@2020-Nov`.

For .NET 6 ("One .NET") integration purposes, provide a default item
group of `@(JavaSourceJar)` which includes `**\*-source?.jar` and
`**\*-src.jar`.  This will allow `dotnet build` of an "Android Java
Library Binding" project (`dotnet new android-bindinglib`) to
automatically process `.java` source code for documentation
translation purposes.

Add `Java.Interop.Tools.Generator.dll` to the
`Microsoft.Android.Sdk*.nupkg` file, as it is an assembly dependency
of `generator.dll`.  (Not sure why this didn't previously fail…)

Finally, add a new `$(_UseLegacyJavadocImport)` MSBuild property
which *disables* use of `java-source-utils.jar` for Javadoc importing,
and instead use the previous, legacy, doesn't work on JDK 11,
approach of using `javadoc` and HTML parsing.  This shouldn't be
needed, but just in case it *is* needed…

[0]: https://github.com/xamarin/android-api-docs
[1]: http://docs.go-mono.com/?link=man%3amdoc(5)
[2]: dotnet/java-interop@69e1b80
[3]: dotnet/java-interop#687
[4]: https://docs.microsoft.com/dotnet/csharp/codedoc
[5]: http://docs.go-mono.com/?link=man%3amdoc-update(1)
@jonpryor
Copy link
Member Author

Back on the "OMG The Build Times!" front:

I should look into disabling C# doc comments for (1) PR builds, and (2) "down-level" $(TargetFrameworkVersion) values. This should help reduce the build time hit for PR builds.

I disabled "down-level" $(TargetFrameworkVersion) builds. (At least I think I did that correctly?)

make jenkins build times:

  • 5886bc1 (master): 34min 45sec
  • This PR: 1h 19min 47sec

Ouch.

Why? Looking at the msbuild-*-leeroy-all.binlog, and processing with:

msbuild /v:diag '/clp:PerformanceSummary;ShowTimestamp' msbuild-*-leeroy-all.binlog > msbuild-leeroy-all.txt

then msbuild-leeroy-all.txt will contain a Target Performance Summary: section, which makes for an "interesting" comparison, for master (5886bc1)-vs-#5253:

-      80745 ms  _GenerateApiDescription                    2 calls
+     109191 ms  _GenerateApiDescription                    2 calls

35% slower for _GeneraetApiDescription. I can't think of any actual reason for this; it could be hardware-related, e.g. "real" hardware vs. VM.

-     126573 ms  _BuildAndroidRuntimes                      1 calls
+     172634 ms  _BuildAndroidRuntimes                      1 calls

~36% slower for _BuildAndroidRuntimes, which I also wouldn't expect to be slower. More fuel for the VM argument? (Which doesn't entirely make sense, as other PRs have similar build times as master?)

This PR adds a new target, which isn't present in master:

+     179719 ms  _BuildAndroidJavadocXml                    2 calls

~3 minutes to process the API-30 sources and produce an android-javadoc.xml file.

-      44955 ms  _GenerateBinding                           2 calls
+     548532 ms  _GenerateBinding                           2 calls
-     114905 ms  CoreCompile                               66 calls
+     849433 ms  CoreCompile                               67 calls

Here we start seeing the cause of the increased build time:

_GenerateBinding takes 12 times longer -- 1200% increase -- taking 9 minutes to execute. This was expected; generator is changed, after all, though 9 minutes on CI is rather longer than expected, vs ~45 seconds on master.

Unexpected is CoreCompile, which takes 7.4 times longer to execute -- a 7400% increase -- taking 14 minutes to execute, vs. ~2 minutes on master.

Apparently csc /doc is not fast, especially when processing 218MB of source code and producing a 72MB Mono.Android.xml file.

Additionally, those Target times only amount to an increase of 21 minutes, which doesn't explain the 45 minute increase in make jenkins time. More analysis is required.

I fixed what sets `$(DocumentationFile)`:
* `$(OutputPath)` always ends with a trailing slash
* Check `$(_ComputeFilesToPublishForRuntimeIdentifiers)` so it isn't set on the inner builds in .NET 6
* Fixed typo with `$(_UseLegacyJavadocImport)`
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Dec 11, 2020
Context: dotnet#5253 (comment)

When Javadoc-to-Xmldoc conversion was enabled, `make jenkins` took
1h 19min 47sec, up from 34min 45sec (ouch!).

Disable Javadoc-to-Xmldoc on PR builds.  Hopefully `make jenkins`
times will return to normal.
Context: dotnet#5253 (comment)

When Javadoc-to-Xmldoc conversion was enabled, `make jenkins` took
1h 19min 47sec, up from 34min 45sec (ouch!).

Disable Javadoc-to-Xmldoc on PR builds.  Hopefully `make jenkins`
times will return to normal.
@jonpryor
Copy link
Member Author

Fortunately, commit [ci] Don't convert Javadoc to Xmldoc for PR builds did what I hoped: make jenkins for the PR build is back to ~35 minutes, so it does properly skip the import…

As an alternative approach, @jpobst suggested that instead of trying to convert all the docs, we just do <summary/>, <param/>, and <returns/>. I'll look into that approach, see how it impacts build times.

jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Dec 17, 2020
Context: dotnet#5253 (comment)
Context: dotnet/java-interop#687 (comment)
Context: dotnet/java-interop@a65b8ab

It looks like only emitting `<summary/>`, `<param/>`, `<returns/>`,
and `<exception/>` is *much* faster than trying to do full
`<remarks/>`.

Update the `generator.exe` invocation to use
`generator --doc-comment-style=summary`, which will hopefully
speed things up.
@jonpryor
Copy link
Member Author

On CI, make jenkins took 43min 44s, vs. the build for PR #5434, in which make jenkins took 34min 31s. Total Mac > Build time is 1h 1min 40s vs. 52min 34s, adding ~9 minutes to the build.

This feels far more reasonable.

jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Dec 17, 2020
Context: dotnet#5253 (comment)
Context: dotnet/java-interop#687 (comment)
Context: dotnet/java-interop@a65b8ab

It looks like only emitting `<summary/>`, `<param/>`, `<returns/>`,
and `<exception/>` is *much* faster than trying to do full
`<remarks/>`.

Update the `generator.exe` invocation to use
`generator --doc-comment-style=summary`, which will hopefully
speed things up.
Context: dotnet#5253 (comment)
Context: dotnet/java-interop#687 (comment)
Context: dotnet/java-interop@a65b8ab

It looks like only emitting `<summary/>`, `<param/>`, `<returns/>`,
and `<exception/>` is *much* faster than trying to do full
`<remarks/>`.

Update the `generator.exe` invocation to use
`generator --doc-comment-style=summary`, which will hopefully
speed things up.
Bump to jonpryor/java.interop@32d469bb,
which addresses some feedback on the Java.Interop side.

Document the new `$(AndroidJavadocVerbosity)` property.

Document the existing `@(JavaSourceJar)` build action.

Append to `$(NoWarn)` instead of *replacing* it in `src/Mono.Android`.

Avoid `**\*-source?.jar`, as that doesn't mean what I thought it meant.
Instead, add/use `$(_DefaultJavaSourceJarPattern)`, which explicitly
specifies both `*-source.jar` and `*-sources.jar`.

Re-introduce the "don't build XML docs on PR builds" behavior.
…ml-docs

Fix merge conflict in `Generator.cs` task.
@jonpryor
Copy link
Member Author

jonpryor commented Jan 4, 2021

Squash-and-merge:

Summary:

[Mono.Android] Generate Mono.Android.xml; @(JavaSourceJar) on JDK11 (#5253)

Message:

Fixes: https://github.com/xamarin/xamarin-android/issues/4789

Context: https://github.com/xamarin/java.interop/commit/7574f166008bb45c0df97315aae7907ac25f8602
Context: https://github.com/xamarin/xamarin-android/issues/5200

What do we want?  Updated documentation!  Better Bindings!

How do we get that?  Uh…

Historically, [Xamarin.Android API docs][0] were produced by parsing
Android's HTML documentation from `docs-24_r01.zip` and converting it
into [**mdoc**(5) documentation][1] via `tools/javadoc2mdoc`.
The problem is that Google hasn't released an updated `docs*.zip`
package since API-24 (~6 years ago), and thus our documentation is
woefully out of date.

We could have scraped developer.android.com/reference within that
time frame, but web scraping is annoying, and we'd still have to deal
with the pain of parsing HTML.

There is an alternative, though: with API-30, there is a new `sources`
package which contains the Java source code used for the API level,
which in turn contains Javadoc source code comments.  Previous API
levels similarly contained an `android-stubs-src.jar` file which
likewise contained Java source code containing Javadoc comments.

The new approach is to:

 1. Update `build-tools/xaprepare` to install the `sources` package.

 2. Use [`java-source-tool.jar`][2] to parse the Java source code,
    creating an `android-javadoc.xml` file.

 3. [Update `generator`][3] to consume `android-javadoc.xml` and
    convert the Javadocs into [C# XML documentation comments][4].

 4. Update `src/Mono.Android` so that `generator` will emit
    C# XML doc comments, and then produce a `Mono.Android.xml` file.

The result is a `Mono.Android.xml` file which contains imported
Android Javadoc documentation, e.g.

	<doc>
	  <assembly><name>Mono.Android</name></assembly>
	  <members>
	    <member name="T:Java.Lang.Object">
	      <summary>Class <c>Object</c> is the root of the class hierarchy.</summary>
	      <remarks>
	        <para>Class <c>Object</c> is the root of the class hierarchy.
	

"Later", `Mono.Android.xml` can then be used alongside
[`mdoc update --import=Mono.Android.xml`][5] to update our published
API documentation.

Generation of `Mono.Android.xml` is disabled by default on CI PR
builds, as generating `Mono.Android.xml` increases `src/Mono.Android`
build times by an unacceptable amount.

With the inclusion of `java-source-tools.jar`, we can now fix the
TODO mentioned in commit 380e95e3, and re-add support for
`@(JavaSourceJar)` when running under JDK 11.

Update `Xamarin.Android.Bindings.Core.targets` so that before
invoking `generator`, we first run `java-source-utils.jar` on the
`@(JavaSourceJar)` files, producing Javadoc XML files.
The `<BindingsGenerator/>` task in turn is updated to accept a new
`BindingsGenerator.JavadocXml` property, which is converted into a
`generator --with-javadoc-xml=FILE` option.

The `@(JavaSourceJar)` item group is "extended" to support the
following item metadata:

  * `%(CopyrightFile)`: A path to a file that contains copyright
    information for the Javadoc contents, which will be appended to
	all imported documentation.

  * `%(UrlPrefix)`: A URL prefix to support linking to online
    documentation within imported documentation.

  * `%(UrlStyle)`: The "style" of URLs to generate when linking to
    online documentation.  Only one style is currently supported:
    `developer.android.com/reference@2020-Nov`.

For .NET 6 ("One .NET") integration purposes, provide a default item
group of `@(JavaSourceJar)` which includes `**\*-source*.jar` and
`**\*-src.jar`.  This will allow `dotnet build` of an "Android Java
Library Binding" project (`dotnet new android-bindinglib`) to
automatically process `.java` source code for documentation
translation purposes.

Add a new `$(AndroidJavadocVerbosity)` MSBuild property, which
controls "how much" of the Javadoc comments are converted into C#
XML documentation.  Supported values are:

  * `full`: Convert as much Javadoc as possible.
  * `intellisense`: Only emit XML documentation for IDE-useful
    constructs: summary, parameters, returns, exceptions.

The difference between the two is *build time* impact: `full` takes
longer, and thus may not always be desirable.

Finally, add a new `$(_UseLegacyJavadocImport)` MSBuild property
which *disables* use of `java-source-utils.jar` for Javadoc importing,
and instead use the previous, legacy, doesn't work on JDK 11,
approach of using `javadoc` and HTML parsing.  This shouldn't be
needed, but just in case it *is* needed…

[0]: https://github.com/xamarin/android-api-docs
[1]: http://docs.go-mono.com/?link=man%3amdoc(5)
[2]: https://github.com/xamarin/java.interop/commit/69e1b80afd81ac502494e4bc2a2de75f5171c73f
[3]: https://github.com/xamarin/java.interop/pull/687
[4]: https://docs.microsoft.com/dotnet/csharp/codedoc
[5]: http://docs.go-mono.com/?link=man%3amdoc-update(1)

Changes: dotnet/java-interop@2f62ffd...7574f16

  * dotnet/java-interop@7574f166: [generator] Add `generator --with-javadoc-xml=FILE` support. (dotnet#687)
  * dotnet/java-interop@7d197f17: Refactor Crc64 type (dotnet#769)
  * dotnet/java-interop@876442f4: [generator] Fix MSBuild warning/error format for Visual Studio (dotnet#765)
  * dotnet/java-interop@3f6cf72b: [.Localization, .Cecil, .Diagnostics, .Generator] $(Nullable)=enable (dotnet#746)

dotnet/java-interop#687 was merged.
Context: dotnet/java-interop@7d197f1
Context: dotnet#5452

dotnet/java-interop@7d197f17 introduced build breakage:

	…/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers/Crc64.cs(58,16):
	  error CS0117: 'Crc64Helper' does not contain a definition for 'HashCore'
	…/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.TypeNameMappings/Java.Interop.Tools.TypeNameMappings/JavaNativeTypeManager.cs(648,27):
	  error CS0117: 'Crc64Helper' does not contain a definition for 'Compute'

PR dotnet#5452 has the fix.

Include the build fix so that PR dotnet#5253 can build.
}

// Arguments sent to java.exe
cmd.AppendSwitchIfNotNull ("-jar ", Path.Combine (MonoAndroidToolsDirectory, "java-source-utils.jar"));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to hard code this java-source-utils.jar ? Or have it as a property like we do for ToolName in other tasks?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should follow the other tasks.

Context: dotnet/java-interop#767
Context: dotnet#5253 (comment)

dotnet/java-interop#767 suggests updating `generator` to use Javadoc
output to determine parameter names.  However, we don't need to do
that, as `class-parse` *already* has (partial) support for that.

Split the `<JavaSourceUtils/>` invocation out into a new
`_ExtractJavadocsFromJavaSourceJars` target invocation, and give it
a "proper" output item group.  This allows it to be executed in
 an incremental manner, which wasn't previously the case.

Additionally, the previous `<JavaSourceUtils/>` invocation "minimized"
the number of Javadoc XML output files based on the "unique" values
of `%(CopyrightFile)`/etc.  Thus, if you had multiple
`@(JavaSourceJar)`s with the same (or no) `%(CopyrightFile)` file,
they'd all be present in the same output XML.

While this was "nice" in that it reduced the number of files running
around, it complicated coming up with a separate item group for
incremental build purposes.

Remove the "nicety" and go for "simplicity": one Javadoc XML per
`@(JavaSourceJar)` file.  Period.

Add a `$(AndroidJavaSourceUtilsJar)` MSBuild property which controls
where `java-source-utils.jar` is present.  This is consistent with
other tasks.

However, *don't* allow `class-parse` to use `java-source-utils` output,
as that doesn't actually work yet.  Doh.
@jonpryor jonpryor merged commit a7413a2 into dotnet:master Jan 6, 2021
@AmrAlSayed0
Copy link

Great work here! 👍 Is this change gonna be released next year with .NET 6 or with the next XA release?

@github-actions github-actions bot locked and limited conversation to collaborators Jan 24, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

@(JavaSourceJar) & JDK11
4 participants