Fork me on GitHub

license:update-file-header

Full name:

org.codehaus.mojo:license-maven-plugin:2.4.0:update-file-header

Description:

The goal to update (or add) the header on project source files.

This goal replace the update-header goal which can not deal with Copyright.

This goal use a specific project file descriptor project.xml to describe all files to update for a whole project.

Attributes:

  • Requires a Maven project to be executed.
  • The goal is thread-safe and supports parallel builds.
  • Since version: 1.0.

Required Parameters

Name Type Since Description
<inceptionYear> Integer 1.0 Inception year of the project.

Will be used as first year of copyright section in new header.


Default: ${project.inceptionYear}
User Property: license.inceptionYear
<organizationName> String 1.0 Name of project's organization.

Will be used as copyright's holder in new header.


Default: ${project.organization.name}
User Property: license.organizationName
<projectName> String 1.0 Name of project (or module).

Will be used as description section of new header.


Default: ${project.name}
User Property: license.projectName

Optional Parameters

Name Type Since Description
<addJavaLicenseAfterPackage> boolean 1.2 A flag to add the license header in java files after the package statement.

This is a practice used by many people (apache, codehaus, ...).

Note: By default this property is then to true since it is a good practice.


Default: true
User Property: license.addJavaLicenseAfterPackage
<addSvnKeyWords> boolean 1.0 A flag to add svn:keywords on new header.

Will add svn keywords :

Id, HeadURL
Note: This parameter is used by the descriptionTemplate, so if you change this template, the parameter could be no more used (depends what you put in your own template...).
Default: false
User Property: license.addSvnKeyWords
<canUpdateCopyright> boolean 1.0 A flag to authorize update of the copyright part of the header.

Note: By default, do NOT authorize it since copyright part should be handled by developpers (holder can change on each file for example).


Default: false
User Property: license.canUpdateCopyright
<canUpdateDescription> boolean 1.0 A flag to authorize update of the description part of the header.

Note: By default, do NOT authorize it since description can change on each file).


Default: false
User Property: license.canUpdateDescription
<canUpdateLicense> boolean 1.0 A flag to authorize update of the license part of the header.

Note: By default, authorize it since license part should always be generated by the plugin.


Default: true
User Property: license.canUpdateLicense
<copyrightOwners> String 1.6 optional copyright owners.

If not set, organizationName parameter will be used instead.


User Property: license.copyrightOwners
<copyrightStringFormat> String 2.1.0 optional copyright string format

If not set, "Copyright (C) %1$s %2$s" is used where the copyright dates are substituted for $1 and the copyright holder for $2.


User Property: license.copyrightStringFormat
<descriptionTemplate> String 1.1 Template used to build the description section of the license header.

(This template use freemarker).


Default: /org/codehaus/mojo/license/default-file-header-description.ftl
User Property: license.descriptionTemplate
<dryRun> boolean 1.0 A flag to test plugin but modify no file.
Default: false
User Property: dryRun
<emptyLineAfterHeader> boolean 1.9 A flag to indicate if there should be an empty line after the header.

Checkstyle requires empty line between license header and package statement. If you are using addJavaLicenseAfterPackage=false it could make sense to set this to true.

Note: By default this property is set to false to keep old behavior.
Default: false
User Property: license.emptyLineAfterHeader
<encoding> String 1.0 Encoding used to read and writes files. Note: If nothing is filled here, we will use the system property file.encoding.
Default: ${project.build.sourceEncoding}
User Property: license.encoding
<excludes> String[] 1.0 Specific files to excludes, separated by a comma. By default, those file types are excluded:
  • modelisation
  • images

User Property: license.excludes
<extraExtensions> Map<String,String> 1.0 To associate extra extension files to an existing comment style.

Keys of the map are the extension of extra files to treat, and the value is the comment style you want to associate.

For example, to treat file with extensions java2 and jdata as java files (says using the java comment style, declare this in your plugin configuration :

<extraExtensions>
<java2>java</java2>
<jdata>java</jdata>
</extraExtensions>
<extraFiles> Map<String,String> 1.11 To associate extra files to an existing comment style.

Keys of the map are the name of extra files to treat, and the value is the comment style you want to associate.

For example, to treat a file named DockerFile as properties files (says using the properties comment style, declare this in your plugin configuration :

<extraFiles>
<DockerFile>properties</DockerFile>
</extraFiles>
<extraTemplateParameters> Map<String,String> 1.6 optional extra templates parameters.

If filled, they are available with prefix extra_ to process license content (says the header and license content).

<failOnMissingHeader> boolean 1.2 A flag to fail the build if dryRun flag is on and some files with no header are detected.

Note: If dryRun flag is not set, there is no effect.


Default: false
User Property: license.failOnMissingHeader
<failOnNotUptodateHeader> boolean 1.2 A flag to fail the build if dryRun flag is on and some files with headers to update.

Note: If dryRun flag is not set, there is no effect.


Default: false
User Property: license.failOnNotUptodateHeader
<ignoreLastDate> boolean 2.3.0 Ignore the last date for copyright year range.
Default: false
User Property: license.ignoreLastDate
<ignoreNoFileToScan> boolean 1.9 A flag to ignore no files to scan.

This flag will suppress the "No file to scan" warning. This will allow you to set the plug-in in the root pom of your project without getting a lot of warnings for aggregation modules / artifacts.

Note: By default this property is set to false to keep old behavior.
Default: false
User Property: license.ignoreNoFileToScan
<ignoreTag> String 1.0 A tag to place on files that will be ignored by the plugin.

Sometimes, it is necessary to do this when file is under a specific license.

Note: If no sets, will use the default tag %% Ignore-License


User Property: license.ignoreTag
<includes> String[] 1.0 Specific files to includes, separated by a comma. By default, it is "** /*".

Note: This parameter is not usable if you are still using a project file descriptor.


User Property: license.includes
<keepBackup> boolean 1.0 A flag to keep a backup of every modified file.
Default: false
User Property: license.keepBackup
<licenseName> String 1.0 Name of the license to use in the project.
User Property: license.licenseName
<licenseResolver> String 1.0 To specify an external extra licenses repository resolver (says the base url of the repository where the license.properties is present).

Note: If you want to refer to a file within this project, start the expression with ${project.baseUri}


User Property: license.licenseResolver
<lineSeparator> String - To specify a line separator to use. If not set, will use system property line.separator.
User Property: license.lineSeparator
<processEndTag> String 1.1 To overwrite the processEndTag used to build header model.

See File header configuration.


User Property: license.processEndTag
<processStartTag> String 1.1 To overwrite the processStartTag used to build header model.

See File header configuration.


User Property: license.processStartTag
<roots> String[] 1.0 To specify the base dir from which we apply the license.

Should be on form "root1,root2,rootn".

By default, the main roots are "src, target/generated-sources, target/processed-sources".

Note: If some of these roots do not exist, they will be simply ignored.

Note: This parameter is not useable if you are still using a project file descriptor.


User Property: license.roots
<sectionDelimiter> String 1.1 To overwrite the sectionDelimiter used to build header model.

See File header configuration.


User Property: license.sectionDelimiter
<skipUpdateLicense> boolean 1.0 A flag to skip the goal.
Default: false
User Property: license.skipUpdateLicense
<trimHeaderLine> boolean 1.14 A flag to indicate if trailing spaces should be trimmed.

Checkstyle usually requires no trailing whitespace. If it is the case it could make sense to set this to true

Note: By default this property is set to false to keep old behavior.
Default: false
User Property: license.trimHeaderLine
<useJavaNoReformatCommentStartTag> boolean 1.9 A flag to use for java comment start tag with no reformat syntax /*-.

See http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141999.html#350


Default: true
User Property: license.useJavaNoReformatCommentStartTag
<verbose> boolean 1.0 Flag to activate verbose mode. Note: Verbose mode is always on if you starts a debug maven instance (says via -X).
Default: ${maven.verbose}
User Property: license.verbose

Parameter Details

<addJavaLicenseAfterPackage>

A flag to add the license header in java files after the package statement.

This is a practice used by many people (apache, codehaus, ...).

Note: By default this property is then to true since it is a good practice.

  • Type: boolean
  • Since: 1.2
  • Required: report.plugin.goal.no
  • User Property: license.addJavaLicenseAfterPackage
  • Default: true

<addSvnKeyWords>

A flag to add svn:keywords on new header.

Will add svn keywords :

Id, HeadURL
Note: This parameter is used by the descriptionTemplate, so if you change this template, the parameter could be no more used (depends what you put in your own template...).
  • Type: boolean
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.addSvnKeyWords
  • Default: false

<canUpdateCopyright>

A flag to authorize update of the copyright part of the header.

Note: By default, do NOT authorize it since copyright part should be handled by developpers (holder can change on each file for example).

  • Type: boolean
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.canUpdateCopyright
  • Default: false

<canUpdateDescription>

A flag to authorize update of the description part of the header.

Note: By default, do NOT authorize it since description can change on each file).

  • Type: boolean
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.canUpdateDescription
  • Default: false

<canUpdateLicense>

A flag to authorize update of the license part of the header.

Note: By default, authorize it since license part should always be generated by the plugin.

  • Type: boolean
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.canUpdateLicense
  • Default: true

<copyrightOwners>

optional copyright owners.

If not set, organizationName parameter will be used instead.

  • Type: java.lang.String
  • Since: 1.6
  • Required: report.plugin.goal.no
  • User Property: license.copyrightOwners

<copyrightStringFormat>

optional copyright string format

If not set, "Copyright (C) %1$s %2$s" is used where the copyright dates are substituted for $1 and the copyright holder for $2.

  • Type: java.lang.String
  • Since: 2.1.0
  • Required: report.plugin.goal.no
  • User Property: license.copyrightStringFormat

<descriptionTemplate>

Template used to build the description section of the license header.

(This template use freemarker).

  • Type: java.lang.String
  • Since: 1.1
  • Required: report.plugin.goal.no
  • User Property: license.descriptionTemplate
  • Default: /org/codehaus/mojo/license/default-file-header-description.ftl

<dryRun>

A flag to test plugin but modify no file.
  • Type: boolean
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: dryRun
  • Default: false

<emptyLineAfterHeader>

A flag to indicate if there should be an empty line after the header.

Checkstyle requires empty line between license header and package statement. If you are using addJavaLicenseAfterPackage=false it could make sense to set this to true.

Note: By default this property is set to false to keep old behavior.
  • Type: boolean
  • Since: 1.9
  • Required: report.plugin.goal.no
  • User Property: license.emptyLineAfterHeader
  • Default: false

<encoding>

Encoding used to read and writes files. Note: If nothing is filled here, we will use the system property file.encoding.
  • Type: java.lang.String
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.encoding
  • Default: ${project.build.sourceEncoding}

<excludes>

Specific files to excludes, separated by a comma. By default, those file types are excluded:
  • modelisation
  • images
  • Type: java.lang.String[]
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.excludes

<extraExtensions>

To associate extra extension files to an existing comment style.

Keys of the map are the extension of extra files to treat, and the value is the comment style you want to associate.

For example, to treat file with extensions java2 and jdata as java files (says using the java comment style, declare this in your plugin configuration :

<extraExtensions>
<java2>java</java2>
<jdata>java</jdata>
</extraExtensions>
  • Type: java.util.Map<java.lang.String, java.lang.String>
  • Since: 1.0
  • Required: report.plugin.goal.no

<extraFiles>

To associate extra files to an existing comment style.

Keys of the map are the name of extra files to treat, and the value is the comment style you want to associate.

For example, to treat a file named DockerFile as properties files (says using the properties comment style, declare this in your plugin configuration :

<extraFiles>
<DockerFile>properties</DockerFile>
</extraFiles>
  • Type: java.util.Map<java.lang.String, java.lang.String>
  • Since: 1.11
  • Required: report.plugin.goal.no

<extraTemplateParameters>

optional extra templates parameters.

If filled, they are available with prefix extra_ to process license content (says the header and license content).

  • Type: java.util.Map<java.lang.String, java.lang.String>
  • Since: 1.6
  • Required: report.plugin.goal.no

<failOnMissingHeader>

A flag to fail the build if dryRun flag is on and some files with no header are detected.

Note: If dryRun flag is not set, there is no effect.

  • Type: boolean
  • Since: 1.2
  • Required: report.plugin.goal.no
  • User Property: license.failOnMissingHeader
  • Default: false

<failOnNotUptodateHeader>

A flag to fail the build if dryRun flag is on and some files with headers to update.

Note: If dryRun flag is not set, there is no effect.

  • Type: boolean
  • Since: 1.2
  • Required: report.plugin.goal.no
  • User Property: license.failOnNotUptodateHeader
  • Default: false

<ignoreLastDate>

Ignore the last date for copyright year range.
  • Type: boolean
  • Since: 2.3.0
  • Required: report.plugin.goal.no
  • User Property: license.ignoreLastDate
  • Default: false

<ignoreNoFileToScan>

A flag to ignore no files to scan.

This flag will suppress the "No file to scan" warning. This will allow you to set the plug-in in the root pom of your project without getting a lot of warnings for aggregation modules / artifacts.

Note: By default this property is set to false to keep old behavior.
  • Type: boolean
  • Since: 1.9
  • Required: report.plugin.goal.no
  • User Property: license.ignoreNoFileToScan
  • Default: false

<ignoreTag>

A tag to place on files that will be ignored by the plugin.

Sometimes, it is necessary to do this when file is under a specific license.

Note: If no sets, will use the default tag %% Ignore-License

  • Type: java.lang.String
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.ignoreTag

<inceptionYear>

Inception year of the project.

Will be used as first year of copyright section in new header.

  • Type: java.lang.Integer
  • Since: 1.0
  • Required: report.plugin.goal.yes
  • User Property: license.inceptionYear
  • Default: ${project.inceptionYear}

<includes>

Specific files to includes, separated by a comma. By default, it is "** /*".

Note: This parameter is not usable if you are still using a project file descriptor.

  • Type: java.lang.String[]
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.includes

<keepBackup>

A flag to keep a backup of every modified file.
  • Type: boolean
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.keepBackup
  • Default: false

<licenseName>

Name of the license to use in the project.
  • Type: java.lang.String
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.licenseName

<licenseResolver>

To specify an external extra licenses repository resolver (says the base url of the repository where the license.properties is present).

Note: If you want to refer to a file within this project, start the expression with ${project.baseUri}

  • Type: java.lang.String
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.licenseResolver

<lineSeparator>

To specify a line separator to use. If not set, will use system property line.separator.
  • Type: java.lang.String
  • Required: report.plugin.goal.no
  • User Property: license.lineSeparator

<organizationName>

Name of project's organization.

Will be used as copyright's holder in new header.

  • Type: java.lang.String
  • Since: 1.0
  • Required: report.plugin.goal.yes
  • User Property: license.organizationName
  • Default: ${project.organization.name}

<processEndTag>

To overwrite the processEndTag used to build header model.

See File header configuration.

  • Type: java.lang.String
  • Since: 1.1
  • Required: report.plugin.goal.no
  • User Property: license.processEndTag

<processStartTag>

To overwrite the processStartTag used to build header model.

See File header configuration.

  • Type: java.lang.String
  • Since: 1.1
  • Required: report.plugin.goal.no
  • User Property: license.processStartTag

<projectName>

Name of project (or module).

Will be used as description section of new header.

  • Type: java.lang.String
  • Since: 1.0
  • Required: report.plugin.goal.yes
  • User Property: license.projectName
  • Default: ${project.name}

<roots>

To specify the base dir from which we apply the license.

Should be on form "root1,root2,rootn".

By default, the main roots are "src, target/generated-sources, target/processed-sources".

Note: If some of these roots do not exist, they will be simply ignored.

Note: This parameter is not useable if you are still using a project file descriptor.

  • Type: java.lang.String[]
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.roots

<sectionDelimiter>

To overwrite the sectionDelimiter used to build header model.

See File header configuration.

  • Type: java.lang.String
  • Since: 1.1
  • Required: report.plugin.goal.no
  • User Property: license.sectionDelimiter

<skipUpdateLicense>

A flag to skip the goal.
  • Type: boolean
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.skipUpdateLicense
  • Default: false

<trimHeaderLine>

A flag to indicate if trailing spaces should be trimmed.

Checkstyle usually requires no trailing whitespace. If it is the case it could make sense to set this to true

Note: By default this property is set to false to keep old behavior.
  • Type: boolean
  • Since: 1.14
  • Required: report.plugin.goal.no
  • User Property: license.trimHeaderLine
  • Default: false

<useJavaNoReformatCommentStartTag>

A flag to use for java comment start tag with no reformat syntax /*-.

See http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141999.html#350

  • Type: boolean
  • Since: 1.9
  • Required: report.plugin.goal.no
  • User Property: license.useJavaNoReformatCommentStartTag
  • Default: true

<verbose>

Flag to activate verbose mode. Note: Verbose mode is always on if you starts a debug maven instance (says via -X).
  • Type: boolean
  • Since: 1.0
  • Required: report.plugin.goal.no
  • User Property: license.verbose
  • Default: ${maven.verbose}