//
// ============LICENSE_START=======================================================
//  Copyright (C) 2016-2018 Ericsson. All rights reserved.
// ================================================================================
// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
// 
// SPDX-License-Identifier: CC-BY-4.0
// ============LICENSE_END=========================================================
//
// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
//

== Configure Checkstyle (Maven)

When using a custom style configuration with Checkstyle, the definition of that style must of course be available to Checkstyle.
In order not to have to distribute style files for checkstyle into all Maven modules, it is recommended that a special Maven module be built that contains the checkstyle style definition.
That module is then used as a dependency in the __POM__ for all other modules that wish to use that checkstyle style.
For a full explanation see link:https://maven.apache.org/plugins/maven-checkstyle-plugin/examples/multi-module-config.html[the explanation of Checkstyle multi-module configuration].

In Apex, the module `apex-model.build-tools` provides the Apex checkstyle style files as resources in `src/main/resources/checkstyle`.
This style is a slightly tweaked version of the standard Google checkstyle style that allows longer lines and has some other checks slightly relaxed.
Therefore, all modules that wish to use the Apex style must put the following build directive into their `pom.xml`.

[source%nowrap,xml]
----
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-checkstyle-plugin</artifactId>
  <version>2.17</version>
  <dependencies>
    <dependency>
      <groupId>org.onap.policy.apex.model</groupId>
      <artifactId>apex-model.build-tools</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>
  <configuration>
    <configLocation>checkstyle/apex_style_checks.xml</configLocation>
    <headerLocation>checkstyle/apex_header.txt</headerLocation>
  </configuration>
</plugin>
----


