Skip to content

[MCOMPILER-205] Add a boolean to generate missing package-info classes by default#88

Merged
olamy merged 2 commits into
apache:masterfrom
gnodet:MCOMPILER-205
Feb 7, 2022
Merged

[MCOMPILER-205] Add a boolean to generate missing package-info classes by default#88
olamy merged 2 commits into
apache:masterfrom
gnodet:MCOMPILER-205

Conversation

@gnodet

@gnodet gnodet commented Feb 4, 2022

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/MCOMPILER-205

This PR provides an option (turned on by default) to generate class files for missing package-info classes. This happens when the package-info.java source file only contains a javadoc and no annotations on the package.
This can be turned on some JDK using -Xpkginfo:always, but that may not work on all JDKs.

This option is turned on by default because the generated class files are valid, so they should not cause any problem, and the current behavior means that incremental compilation is broken, which is a really annoying problem and the root cause is quite difficult to analyse.

@olamy
olamy merged commit 40dd50f into apache:master Feb 7, 2022
@olamy olamy added the enhancement New feature or request label Feb 9, 2022
if ( path.startsWith( root ) )
{
String rel = path.substring( root.length() );
Set<File> files = sourceMapping.getTargetFiles( getOutputDirectory(), rel );

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

#95

@joakime

joakime commented Apr 7, 2022

Copy link
Copy Markdown

This change in MCOMPILER has started to cause problems in various tooling that scans JARs for bytecode scanning reasons.

Those users on limited JVMs (android, java 8 compact builds, embedded systems, etc) are also being impacted by this being true.

@rmannibucau

Copy link
Copy Markdown

+1 it is also true on plain JVM and EE containers where it has side effects (even if some can be silently recovered) so agree default should change to be backward compatible in next release.

@DarioViva42

Copy link
Copy Markdown

so they should not cause any problem

This is a bold statement IMHO. For everyone using ArchUnit and counting on package-info.java files not to be compiled (as this was the default behaviour prior to 3.10.0) you can use the import-option ImportOption.DoNotIncludePackageInfos.class to exclude package-info.class files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants