AbstractJigsawMojo.java

/*-
 * #%L
 * io.earcam.maven.plugin.jigsaw
 * %%
 * Copyright (C) 2018 earcam
 * %%
 * SPDX-License-Identifier: (BSD-3-Clause OR EPL-1.0 OR Apache-2.0 OR MIT)
 *
 * You <b>must</b> choose to accept, in full - any individual or combination of
 * the following licenses:
 * <ul>
 * 	<li><a href="https://opensource.org/licenses/BSD-3-Clause">BSD-3-Clause</a></li>
 * 	<li><a href="https://www.eclipse.org/legal/epl-v10.html">EPL-1.0</a></li>
 * 	<li><a href="https://www.apache.org/licenses/LICENSE-2.0">Apache-2.0</a></li>
 * 	<li><a href="https://opensource.org/licenses/MIT">MIT</a></li>
 * </ul>
 * #L%
 */
package io.earcam.maven.plugin.jigsaw;

import java.io.File;

import org.apache.maven.plugins.annotations.Parameter;

abstract class AbstractJigsawMojo extends LessAbstractMojo {

	static final String CATEGORY = "jigsaw";

	/**
	 * Add <b>provides</b> clauses to the <b>module-info</b> definition for entries found in
	 * <b>META-INF/services</b>.
	 * 
	 * @see <a href="https://docs.oracle.com/javase/tutorial/ext/basics/spi.html">SPI</a>
	 */
	@Parameter(property = "addMetaInfServices", defaultValue = "true")
	protected boolean addMetaInfServices = true;

	/**
	 * The <b>module-info.class</b> file. Default value is recommended; <b>module-info.class</b> must appear in the root
	 * of the JAR, with the exception of Multi-Release JARs.
	 */
	@Parameter(property = "targetFile", defaultValue = "${project.build.outputDirectory}/module-info.class", required = true)
	protected File targetFile;


	protected AbstractJigsawMojo(String name)
	{
		super(logIdentifierName(name));
	}


	protected static final String logIdentifierName(String name)
	{
		return CATEGORY + '.' + name;
	}
}