javacc-maven-plugin
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>org.javacc.plugin</groupId>
<artifactId>javacc-maven-plugin</artifactId>
<version>3.8.0</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2025-2026, Marc Mazas <mazas.marc@gmail.com>.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the names of the copyright holders nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- choosed to detach form mojohaus / apache hierarchy... -->
<parent>
<groupId>org.javacc.plugin</groupId>
<artifactId>javacc-maven-plugin-parent</artifactId>
<version>3.8.0.1</version>
<!-- <version>3.8.1-SNAPSHOT</version>-->
<relativePath>/parent/pom.xml</relativePath>
</parent>
<artifactId>javacc-maven-plugin</artifactId>
<packaging>maven-plugin</packaging>
<!-- <version>3.8.0-SNAPSHOT</version>-->
<version>3.8.0</version>
<name>JavaCC Maven Plugin</name>
<description>The (completely rewritten) Maven 3 Plugin for processing JavaCC/JJTree v8.1+ / JTB
v1.5+ grammar files.</description>
<url>https://github.com/javacc/javacc-maven-plugin/</url>
<inceptionYear>2005</inceptionYear>
<properties>
<!-- for javacc (core only needed) / jtb dependencies used for compiling the plugin code -->
<javacc.core.comp-version>8.1.0</javacc.core.comp-version>
<!-- <javacc.core.version>8.0.1</javacc.core.version>-->
<jtb.comp-version>1.5.3</jtb.comp-version>
<!-- <jtb.version>1.5.3-SNAPSHOT</jtb.version>-->
</properties>
<organization>
<name>javacc.org</name>
<url>https://javacc.github.io/javacc/</url>
</organization>
<issueManagement>
<system>GitHub</system>
<url>https://github.com/javacc/javacc/issues</url>
</issueManagement>
<!-- Sonatype Central Portal keeps snapshots during 90 days;
current available snapshots browsable at
https://central.sonatype.com/service/rest/repository/browse/maven-snapshots/ -->
<!-- For projects wanting to configure this JavaCC plugin as a dependency -->
<!-- <repositories>-->
<!-- <repository>-->
<!-- <id>centralportal</id>-->
<!-- <name>Central Portal (releases)</name>-->
<!-- <url>https://central.sonatype.com/</url>-->
<!-- </repository>-->
<!-- <repository>-->
<!-- <id>centralportalsnapshots</id>-->
<!-- <name>Central Portal Snapshots</name>-->
<!-- <url>https://central.sonatype.com/repository/maven-snapshots/</url>-->
<!-- </repository>-->
<!-- </repositories>-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-sink-api</artifactId>
<version>${doxia-sink-api.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>${maven-core.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>${maven-model.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>${maven-plugin-api.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>${maven-plugin-annotations.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-api</artifactId>
<version>${maven-reporting-api.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-impl</artifactId>
<version>${maven-reporting-impl.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>${plexus-utils.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-xml</artifactId>
<version>${plexus-xml.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- how dependencies are configured here impact not only on building the plugin
but also on configuring it for running it (like in the integration tests;
that is without the need to declare dependencies other than the javacc artifacts)!-->
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-sink-api</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-api</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-impl</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<!-- dependency plugin will warn on it saying unused while building the jar,
but set here to runtime to avoid need to declare it as dependency in projects
using this plugin, like those under /src/it -->
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-xml</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.javacc</groupId>
<artifactId>core</artifactId>
<version>${javacc.core.comp-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<!-- temporary until published in the right namespace -->
<!-- <groupId>edu.purdue.cs</groupId>-->
<groupId>edu.purdue.jtb</groupId>
<artifactId>jtb</artifactId>
<version>${jtb.comp-version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<!-- for the Maven experts: sorry for these verbose comments...
but Maven is hard to remember and has so many implicit things... -->
<pluginManagement>
<plugins>
<!-- standard maven lifecycles -->
<!-- in lifecycle order, then in phase order, then in execution order -->
<!-- setting all (latest) versions for all explicit & implicit plugins to ensure build
consistency across contributors' installations -->
<!-- lifecycle: clean -->
<!-- **************** -->
<!-- phase: clean -->
<!-- plugin: maven-clean-plugin is not used to clean /target & other files,
we use the maven-antrun-plugin on target clean in build.xml script
to centralize this cleaning
-->
<plugin>
<!-- removes files generated at build-time; usually implicit;
goals: clean -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven-clean-plugin.version}</version>
</plugin>
<!-- lifecycle: default (build) -->
<!-- ************************** -->
<!-- phase: validate -->
<!-- (toolchains is in a profile) -->
<plugin>
<!-- get info about the project or the system; usually implicit;
goals: (many, not listed) -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>${maven-help-plugin.version}</version>
</plugin>
<plugin>
<!-- creates a Maven plugin descriptor for mojos, to include in the jar;
generates report files for mojos as well as the artifact metadata and
generates a generic help goal
goals: descriptor, (addPluginArtifactMetadata), helpmojo, help -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>${maven-plugin-plugin.version}</version>
</plugin>
<!-- phase: package -->
<plugin>
<!-- builds a jar file from the compiled project classes and resources;
usually implicit;
goals: jar, test-jar -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
</plugin>
<!-- phase: verify -->
<plugin>
<!-- manipulates artifacts;
goals: (many, not listed) -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
</plugin>
<!-- phase: install -->
<plugin>
<!-- copies the project artifacts to the user's local repository;
usually implicit;
goals: install, install-file, help -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${maven-install-plugin.version}</version>
</plugin>
<!-- lifecycle: site -->
<!-- *************** -->
<!-- phase: site -->
<plugin>
<!-- generates a web site for the project, including reports configured in the pom -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven-site-plugin.version}</version>
</plugin>
<plugin>
<!-- creates report files for the mojos -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-report-plugin</artifactId>
<version>${maven-plugin-report-plugin.version}</version>
</plugin>
<plugin>
<!-- generates reports information about the project from its pom -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>${maven-project-info-reports-plugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<!-- generates descriptor and help mojo -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<executions>
<execution>
<id>default-descriptor</id>
<phase>process-classes</phase>
<configuration>
<internalJavadocBaseUrl>./apidocs/</internalJavadocBaseUrl>
</configuration>
</execution>
<!-- to avoid getting "mojo not used in maven 3.9.0+" -->
<!-- <execution>-->
<!-- <id>default-addPluginArtifactMetadata</id>-->
<!-- <goals>-->
<!-- <goal>addPluginArtifactMetadata</goal>-->
<!-- </goals>-->
<!-- <configuration>-->
<!-- <skip>true</skip>-->
<!-- </configuration>-->
<!-- </execution>-->
<execution>
<id>generate-helpmojo</id>
<goals>
<goal>helpmojo</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!-- report dependency problems -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>analyze</id>
<goals>
<goal>analyze-only</goal>
</goals>
<configuration>
<!-- <failOnWarning>true</failOnWarning>-->
<!-- see comment in coresponding dependency section -->
<ignoredUnusedDeclaredDependencies>org.codehaus.plexus:plexus-xml</ignoredUnusedDeclaredDependencies>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<!-- specific clean of ${site.dir} -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<executions>
<execution>
<id>clean-site</id>
<phase>pre-site</phase>
<goals>
<goal>clean</goal>
</goals>
<configuration>
<!-- do not delete all target! -->
<excludeDefaultDirectories>true</excludeDefaultDirectories>
<filesets>
<fileset>
<directory>${site.dir}</directory>
<useDefaultExcludes>false</useDefaultExcludes>
</fileset>
</filesets>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<!-- generate web site reports in ${site.dir} -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<configuration>
<!-- <relativizeSiteLinks>false</relativizeSiteLinks>-->
<outputDirectory>${site.dir}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<!-- creates report files for the mojos -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-report-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<!-- do not trigger forked execution of lifecyle process-classes -->
<report>report-no-fork</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<plugin>
<!-- provides many standard reports by extracting information from the pom -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<!-- <report>index</report>-->
<report>summary</report>
<report>help</report>
<report>dependencies</report>
<report>dependency-info</report>
<report>dependency-management</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<!-- no javadoc report in the web site (only for Sonatype releases, in parent profile) -->
<plugin>
<!-- creates code coverage report -->
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
<configuration>
<dataFile>${project.build.directory}/jacoco/jacoco.exec</dataFile>
<footer>Integration tests coverage report</footer>
<title>Integration tests coverage</title>
<excludes>org/javacc/plugin/**</excludes>
</configuration>
<reportSets>
<reportSet>
<reports>
<report>report-integration</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
<profiles>
<profile>
<!-- enables running integration tests;
implicitely activated unless property 'maven.test.skip' is set to 'true' -->
<id>run-its</id>
<activation>
<property>
<name>maven.test.skip</name>
<value>!true</value>
</property>
</activation>
<build>
<pluginManagement>
<plugins>
<!-- phase: initialize for prepare-agent goal, verify for report -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
</plugin>
<!-- phase: integration-test -->
<plugin>
<!-- runs a set of Maven projects;
goals: install, integration-test, verify, run -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<version>${maven-invoker-plugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>default-install</id>
<goals>
<goal>install</goal>
</goals>
<!-- non-standard phase (standard is install) to install the plugin standard jar
before the integration tests, as they will be performed on it -->
<phase>pre-integration-test</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<!-- non-standard phase (standard is initialize, for unit tests),
need to be after compile for integration tests -->
<phase>pre-integration-test</phase>
<configuration>
<destFile>${project.build.directory}/jacoco/jacoco.exec</destFile>
<classDumpDir>${project.build.directory}/jacoco/dump</classDumpDir>
</configuration>
</execution>
<execution>
<!-- can be run as a single goal with
mvn org.jacoco:jacoco-maven-plugin:0.8.13:report@report
(or set id to 'default-cli'' and remove '@report' -->
<id>report</id>
<!-- <phase>install</phase> -->
<goals>
<goal>report</goal>
</goals>
<!-- non-standard phase (standard is verify, for unit tests) -->
<phase>post-integration-test</phase>
<configuration>
<dataFile>${project.build.directory}/jacoco/jacoco.exec</dataFile>
<outputDirectory>${project.build.directory}/jacoco/report</outputDirectory>
<excludes>
<exclude>src/it/**/*</exclude>
<exclude>target/**/*</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<!-- under m2e use an external maven installation, not the embeded
one! -->
<configuration>
<!-- projects will be cloned under /target/it-clone -->
<cloneProjectsTo>${project.build.directory}/it-clone</cloneProjectsTo>
<!-- run conf: see
https://maven.apache.org/plugins/maven-invoker-plugin/run-mojo.html#invokerPropertiesFile-->
<!-- default false -->
<!-- <debug>true</debug>-->
<failIfNoProjects>true</failIfNoProjects>
<!-- default false -->
<ignoreFailures>ignoreFailures.it</ignoreFailures>
<!-- we do not use a local repo copy as we got problems on snapshots of locally
modified plugins not preferred to remote ones (plexus-compiler-csharp)
<localRepositoryPath>${project.basedir}/src/it/local-repo</localRepositoryPath>
-->
<!-- * 1st opt NEEDED otherwise the (javac) compiler plugin will not properly
decode non-ASCII chars despite other encoding settings; why is a mystery
* 2nd opt is for jacoco (argLine set by prepare-agent) -->
<mavenOpts>-Dfile.encoding=UTF-8 @{argLine}</mavenOpts>
<projectsDirectory>src/it</projectsDirectory>
<postBuildHookScript>verify-files.bsh</postBuildHookScript>
<settingsFile>${project.basedir}/src/it/settings.xml</settingsFile>
<skipInvocation>${skip.it.it}</skipInvocation>
<!-- streamLogs default is false; true with parallelThreads mixes logs -->
<streamLogs>true</streamLogs>
<!-- <parallelThreads>4</parallelThreads>-->
</configuration>
<executions>
<!-- we do not need to install copies of dependencies, so no install goal -->
<execution>
<id>integration-test-run</id>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>