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

licenseHeader.content gets the © symbol turned to ?? in CI, but not locally #2266

Open
6 tasks done
tginiotis-at-work opened this issue Sep 20, 2024 · 2 comments
Open
6 tasks done

Comments

@tginiotis-at-work
Copy link

When I run the spotless maven plugin check goal locally, it goes through fine. But in CI, specifically Jenkins, I always get errors:

[ERROR] Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:2.43.0:check (default) on project ccc-reuse: The following files had format violations:
[ERROR]     src/test/java/com/uuu/ccc/common/test/util/TransformTest.java
[ERROR]         @@ -2,7 +2,7 @@
[ERROR]          ·*·OCO·Source·Materials
[ERROR]         -·*·©·Copyright·UUU·2008-2024.·All·Rights·Reserved.
[ERROR]         +·*·??·Copyright·UUU·5655.·All·Rights·Reserved.

If I replace the © in licenseHeader.content with © - it behaves the same, just that it turns the symbol into a single ? instead of two.

I understand that this is some environment issue, but looking at it - the maven versions are the same, java versions the same. LANG, LC_ALL, LANGUAGE variables are the same.

Running maven with -X it also shows that it reads the pom like that in CI:

[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal:          com.diffplug.spotless:spotless-maven-plugin:2.43.0:check (default)
[DEBUG] Style:         Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <applySkip default-value="false">${spotless.apply.skip}</applySkip>
  <baseDir default-value="${project.basedir}"/>
  <buildDir default-value="${project.build.directory}"/>
  <checkSkip default-value="false">${spotless.check.skip}</checkSkip>
  <encoding default-value="UTF-8">UTF-8</encoding>
  <filePatterns>${spotlessFiles}</filePatterns>
  <goal default-value="${mojoExecution.goal}"/>
  <java>
    <palantirJavaFormat/>
  </java>
  <licenseHeader>
    <content>/*******************************************************************************
 * OCO Source Materials
 * ? Copyright UUU $YEAR. All Rights Reserved.
 *
 * The source code for this program is not published or otherwise
 * divested of its trade secrets, irrespective of what has
 * been deposited with the U.S. Copyright Office.
 *******************************************************************************/</content>
    <delimiter>(/(/|\*{1,2}[^*])|package|import|public|final|abstract|class|enum|interface)</delimiter>
  </licenseHeader>
  <lineEndings default-value="GIT_ATTRIBUTES_FAST_ALLSAME"/>
  <project default-value="${project}"/>
  <repositories default-value="${project.remotePluginRepositories}"/>
  <repositorySystemSession default-value="${repositorySystemSession}"/>
  <setLicenseHeaderYearsFromGitHistory>${spotlessSetLicenseHeaderYearsFromGitHistory}</setLicenseHeaderYearsFromGitHistory>
  <skip default-value="false">${spotless.skip}</skip>
</configuration>

but it shows up properly when run locally. I tried adding the UTF8 BOM to the POM, but it didn't help. Otherwise it is UTF8 encoded.

Maven 3.9.9. Spotless 2.43.0.
CI is running in a Ubuntu 24.04.1 LTS docker container running on a CentOS Stream 8 host.

Does anyone have any ideas what could be the issue here?

Spotless configuration:

			<plugin>
				<groupId>com.diffplug.spotless</groupId>
				<artifactId>spotless-maven-plugin</artifactId>
				<configuration>
					<java>
						<palantirJavaFormat/>
					</java>
					<licenseHeader>
						<content>
/*******************************************************************************
 * OCO Source Materials
 * © Copyright UUU $YEAR. All Rights Reserved.
 *
 * The source code for this program is not published or otherwise
 * divested of its trade secrets, irrespective of what has
 * been deposited with the U.S. Copyright Office.
 *******************************************************************************/
						</content>
						<delimiter>(/(/|\*{1,2}[^*])|package|import|public|final|abstract|class|enum|interface)</delimiter>
					</licenseHeader>
					<encoding>UTF-8</encoding>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>check</goal>
						</goals>
						<phase>compile</phase>
					</execution>
				</executions>
			</plugin>
		</plugins>
  • summary of problem
  • Gradle or Maven version
  • spotless version
  • operating system and version
  • copy-paste your full Spotless configuration block(s), and a link to a public git repo that reproduces the problem if possible
  • copy-paste the full content of any console errors emitted by gradlew spotless[Apply/Check] --stacktrace
@nedtwigg
Copy link
Member

Maybe this?

export MAVEN_OPTS="-Dfile.encoding=UTF-8"

I assume this is a copy-paste error, but the 5655 in Copyright·UUU·5655.·All·Rights·Reserved. is strange...

@tginiotis-at-work
Copy link
Author

The -Dfile.encoding=UTF-8 MAVEN_OPTS did not solve the issue, but it did make the © symbol be represented by a single ? instead of two in the error.

The other thing about the number appearing in the wrong spot is not a copy-paste error, but I removed some lines which makes it unobvious where it came from. The error without lines removed:

[ERROR] Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:2.43.0:check (default) on project ccc-reuse: The following files had format violations:
[ERROR]     src/test/java/com/uuu/ccc/common/test/util/TransformTest.java
[ERROR]         @@ -2,7 +2,7 @@
[ERROR]          ·*·UUU·Confidential
[ERROR]          ·*·OCO·Source·Materials
[ERROR]          ·*·5655-ASD
[ERROR]         -·*·©·Copyright·UUU·2008-2024.·All·Rights·Reserved.
[ERROR]         +·*·?·Copyright·UUU·5655.·All·Rights·Reserved.
[ERROR]          ·*
[ERROR]          ·*·The·source·code·for·this·program·is·not·published·or·otherwise
[ERROR]          ·*·divested·of·its·trade·secrets,·irrespective·of·what·has

and pom.xml:

						<content>
/*******************************************************************************
 * UUU Confidential
 * OCO Source Materials
 * 5655-ASD
 * © Copyright UUU $YEAR. All Rights Reserved.
 *
 * The source code for this program is not published or otherwise
 * divested of its trade secrets, irrespective of what has
 * been deposited with the U.S. Copyright Office.
 *******************************************************************************/
						</content>

it does seem to be messing up the year for some reason though.

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

No branches or pull requests

2 participants