google-java-format
google-java-format copied to clipboard
Inconsistent blank line between license and package statement
Expected Behavior
/* File header */
package ...
⇓
/* File header */
package ...
Current Behavior
/* File header */
package ...
⇓
/* File header */
package ...
Corresponding Section in Java Style Guide
Source file structure
A source file consists of, in order:
License or copyright information, if present Package statement Import statements Exactly one top-level class Exactly one blank line separates each section that is present.
https://google.github.io/styleguide/javaguide.html#s3-source-file-structure
Test Cases
/var/tmp $ curl -L -O -s https://github.com/google/google-java-format/releases/download/v1.21.0/google-java-format-1.21.0-all-deps.jar
/var/tmp $ printf '/* File header */\npackage p; class PackageHeader{}\n' > PackageHeader.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace PackageHeader.java
/var/tmp $ cat PackageHeader.java
/* File header */
package p;
class PackageHeader {}
/var/tmp $ printf '/* File header */\n\npackage p; class PackageHeader{}\n' > PackageHeader.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace PackageHeader.java
/var/tmp $ cat PackageHeader.java
/* File header */
package p;
class PackageHeader {}
/var/tmp $ printf '/* File header */\n\n\npackage p; class PackageHeader{}\n' > PackageHeader.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace PackageHeader.java
/var/tmp $ cat PackageHeader.java
/* File header */
package p;
class PackageHeader {}
/var/tmp $ printf '/* File header */\n@NonNullApi package com.baeldung.nullibility; import org.springframework.lang.NonNullApi;\n' > package-info.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace package-info.java
/var/tmp $ cat package-info.java
/* File header */
@NonNullApi
package com.baeldung.nullibility;
import org.springframework.lang.NonNullApi;
/var/tmp $ printf '/* File header */\n\n@NonNullApi package com.baeldung.nullibility; import org.springframework.lang.NonNullApi;\n' > package-info.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace package-info.java
/var/tmp $ cat package-info.java
/* File header */
@NonNullApi
package com.baeldung.nullibility;
import org.springframework.lang.NonNullApi;
/var/tmp $ printf '/* File header */\n\n\n@NonNullApi package com.baeldung.nullibility; import org.springframework.lang.NonNullApi;\n' > package-info.java
/var/tmp $ java -jar google-java-format-1.21.0-all-deps.jar --replace package-info.java
/var/tmp $ cat package-info.java
/* File header */
@NonNullApi
package com.baeldung.nullibility;
import org.springframework.lang.NonNullApi;
Maybe related: https://github.com/google/google-java-format/issues/235
https://github.com/google/google-java-format/issues/434