POMs are written with the default line ending of the platform

If you execute the task ‘uploadArchives’, it will create pom.xml files with platform default line endings. This is a problem when ‘uploadArchives’ is used to deploy to a local directory to manually maintain a Maven repository. That is, I want to upload this repository to Github and want to use LF line endings (actually I set git to always convert line endings to LF) and this line ending conversion does not work with sha1 and md5 checksums.

Currently I use the following workaround:

afterEvaluate {
    System.setProperty('line.separator', '\n');
}

I find this workaround somewhat fragile because it might not work if Gradle run tasks in separate processes.

Is it somehow possible to specify the line endings with which pom files are generated?

Do you happen to know what Maven does here? Does it always use LF?

I don’t think there is anything Maven does since in Maven there is no need to generate the pom (as it naturally exists), so I think it just copies the pom.xml. I never really verified it but what I know is that it won’t change LF line endings to anything else (also I doubt that it would change anything else to LF). I believe it does nothing but copies the pom.

That’s a good point. I’ll raise this as an issue.

My preference for a resolution would be to always use LF when generating the POM, but we’ll have to investigate the implications.

For the time being, your workaround is the best you can do.