<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <modules>
        <module>javaparser-core</module>
        <module>javaparser-core-testing</module>
        <module>javaparser-core-testing-bdd</module>
        <module>javaparser-core-generators</module>
        <module>javaparser-core-metamodel-generator</module>
        <module>javaparser-core-serialization</module>
        <module>javaparser-symbol-solver-core</module>
        <module>javaparser-symbol-solver-testing</module>
    </modules>

    <groupId>com.github.javaparser</groupId>
    <artifactId>javaparser-parent</artifactId>
    <packaging>pom</packaging>
    <version>3.25.4</version>

    <name>javaparser-parent</name>
    <url>https://github.com/javaparser</url>
    <inceptionYear>2007</inceptionYear>
    <description>Java Parser and Abstract Syntax Tree for Java</description>

    <licenses>
        <license>
            <name>GNU Lesser General Public License</name>
            <url>http://www.gnu.org/licenses/lgpl-3.0.html</url>
            <distribution>repo</distribution>
        </license>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
            <comments>A business-friendly OSS license</comments>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>Danny van Bruggen</name>
            <email>hexagonaal@gmail.com</email>
            <url>https://github.com/matozoid</url>
            <id>matozoid</id>
        </developer>
        <developer>
            <name>Júlio Vilmar Gesser</name>
            <email>jgesser@gmail.com</email>
            <id>jgesser@gmail.com</id>
        </developer>
        <developer>
            <name>Sebastian Kirsch</name>
            <email>sebastian.kirsch@immobilienscout24.de</email>
            <url>https://github.com/sebastiankirsch</url>
            <id>sebastiankirsch</id>
        </developer>
        <developer>
            <name>André Rouél</name>
            <url>https://github.com/before</url>
            <id>before</id>
        </developer>
        <developer>
            <name>Nicholas Smith</name>
            <email>smiddypence@gmail.com</email>
            <url>https://github.com/SmiddyPence</url>
            <id>SmiddyPence</id>
        </developer>
        <developer>
            <name>Federico Tomassetti</name>
            <email>federico@tomassetti.me</email>
            <url>https://github.com/ftomassetti</url>
            <id>ftomassetti</id>
        </developer>
        <developer>
            <name>Didier Villevalois</name>
            <email>ptitjes@free.fr</email>
            <url>https://github.com/ptitjes</url>
            <id>ptitjes</id>
        </developer>
        <developer>
            <name>Roger Howell</name>
            <url>https://github.com/MysterAitch</url>
            <id>MysterAitch</id>
        </developer>
        <developer>
            <name>Roger Howell</name>
            <url>https://github.com/MysterAitch</url>
            <id>MysterAitch</id>
        </developer>
        <developer>
            <name>Jean Pierre Lerbscher</name>
            <url>https://github.com/jlerbsc</url>
            <id>jlerbsc</id>
        </developer>
        <developer>
            <name>Maarten Coene</name>
            <url>https://github.com/maartenc</url>
            <id>maartenc</id>
        </developer>
    </developers>
    <contributors>
        <contributor>
            <name>Sebastian Kürten</name>
            <email>sebastian@topobyte.de</email>
            <url>https://github.com/sebkur</url>
        </contributor>
        <contributor>
            <name>Junfei Liang</name>
            <email>fly2best@gmail.com</email>
            <url>https://github.com/fly2best</url>
        </contributor>
        <contributor>
            <name>Jarkko Miettinen</name>
            <url>https://github.com/jmiettinen</url>
        </contributor>
        <contributor>
            <name>Alexey Morozov</name>
            <email>morozov@altlinux.org</email>
            <url>https://github.com/amorozov</url>
        </contributor>
        <contributor>
            <name>Donny Nadolny</name>
            <email>donny.nadolny@gmail.com</email>
            <url>https://github.com/dnadolny</url>
        </contributor>
        <contributor>
            <name>Raquel Pau</name>
            <email>raquelpau@gmail.com</email>
            <url>https://github.com/rpau</url>
        </contributor>
        <contributor>
            <name>Chao Shi</name>
            <email>stepinto@live.com</email>
            <url>https://github.com/stepinto</url>
        </contributor>
        <contributor>
            <name>Michael Schieder</name>
            <email>michael.schieder@gmail.com</email>
            <url>https://github.com/mschieder</url>
        </contributor>
        <contributor>
            <name>CRUZ Maximilien</name>
            <email>maximilien.cruz@gmail.com</email>
            <url>https://github.com/DeepSnowNeeL</url>
        </contributor>
    </contributors>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>

        <!-- Maven Plugins -->
    </properties>

    <scm>
        <connection>scm:git:git://github.com/javaparser/javaparser.git</connection>
        <developerConnection>scm:git:git@github.com:javaparser/javaparser.git</developerConnection>
        <url>https://github.com/javaparser/javaparser.git</url>
        <tag>HEAD</tag>
    </scm>

    <issueManagement>
        <system>GitHub Issue Tracker</system>
        <url>https://github.com/javaparser/javaparser/issues</url>
    </issueManagement>

    <distributionManagement>
        <!-- https://docs.github.com/en/actions/guides/publishing-java-packages-with-maven#publishing-packages-to-the-maven-central-repository -->
        <!-- https://blog.sonatype.com/what-publishers-need-to-know-about-migrating-from-jcenter-/-bintray-to-the-central-repository -->
        <!-- New: Publishing directly to Sonatype OSSRH (OSS Repository Hosting), for release to Maven Central -->
        <!-- URLs available from: https://central.sonatype.org/pages/ossrh-guide.html#accessing-repositories -->
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.helger.maven</groupId>
                    <artifactId>ph-javacc-maven-plugin</artifactId>
                    <version>4.1.5</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.3.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.11.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>3.1.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.3.0</version>
                </plugin>
                <plugin>
                    <!-- See also: https://central.sonatype.org/pages/apache-maven.html#performing-a-release-deployment-with-the-maven-release-plugin -->
                    <!-- Plugin for preparing and performing a release (to ossrh / maven central). -->
                    <!-- TODO: Consider switching to using `mvn versions:set` and org.sonatype.plugins:nexus-staging-maven-plugin -->
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>3.0.1</version>
                    <configuration>
                        <!-- When updating versions during release, synchronise versions of sub-modules with the parent-pom. -->
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <!-- During release:prepare, update the readme (via the "run-release" profile) and add it to git. -->
                        <preparationGoals>-Prun-release clean verify scm:add scm:checkin</preparationGoals>
                        <!-- During release:perform, enable the release-specific profiles -->
                        <releaseProfiles>run-release</releaseProfiles>
                        <!-- Disable pushing of changes (i.e. false, for local testing) -->
                        <pushChanges>false</pushChanges>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.3.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-scm-plugin</artifactId>
                    <version>2.0.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.3.0</version>
                </plugin>
                <plugin>
                    <groupId>org.eluder.coveralls</groupId>
                    <artifactId>coveralls-maven-plugin</artifactId>
                    <version>4.3.0</version>
                    <dependencies>
                        <dependency>
                            <groupId>javax.xml.bind</groupId>
                            <artifactId>jaxb-api</artifactId>
                            <version>2.3.1</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.10</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.5.0</version>
                    <configuration>
                        <source>${java.version}</source>
                        <additionalOptions>
                            <!-- doclint requires perfect JavaDoc, and fails the generation of javadoc on even minor problems -->
                            <!-- Ideally we will have perfectly formatted javadoc, but for now just disable it. -->
                            <additionalOption>-Xdoclint:none</additionalOption>
                        </additionalOptions>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.12.1</version>
                    <configuration>
                        <!-- TODO/FIXME: Is this still the way to disable doclint during release/site? -->
                        <additionalOptions>
                            <additionalOption>-Xdoclint:none</additionalOption>
                        </additionalOptions>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>biz.aQute.bnd</groupId>
                    <artifactId>bnd-maven-plugin</artifactId>
                    <version>6.4.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.1.2</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>3.1.1</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.4.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>templating-maven-plugin</artifactId>
                    <version>1.0.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.6.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>2.16.0</version>
                    <configuration>
                        <generateBackupPoms>false</generateBackupPoms>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>3.3.0</version>
                    <configuration>
                        <configLocation>dev-files/JavaParser-CheckStyle.xml</configLocation>
                        <logViolationsToConsole>true</logViolationsToConsole>
                        <consoleOutput>true</consoleOutput>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>10.12.1</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>3.29.2-GA</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>32.1.1-jre</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-library</artifactId>
                <version>2.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>5.9.3</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-params</artifactId>
                <version>5.9.3</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
                <version>5.9.3</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-inline</artifactId>
                <version>4.6.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <profiles>
        <profile>
            <!-- doclint requires perfect JavaDoc, and fails the generation of javadoc on even minor problems -->
            <!-- Ideally we will have perfectly formatted javadoc, but for now just disable it. -->
            <id>doclint-java8-disable</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <!-- FIXME: Can this be removed? It appears to be a no-op, with be no action to be done when activated (e.g. set a parameter, configure a plugin, etc.) -->
        </profile>
        <profile>
            <!-- This profile is intended for use when preparing and deploying a release. -->
            <id>run-release</id>
            <build>
                <plugins>
                    <!-- Update the readme with the new version number, but only when compiling a new release. -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-readme</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.basedir}</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${project.basedir}/doc</directory>
                                            <includes>
                                                <include>readme.md</include>
                                            </includes>
                                            <filtering>true</filtering>
                                        </resource>
                                    </resources>
                                    <encoding>${project.build.sourceEncoding}</encoding>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- Commit the updated readme file to the repo.  -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-scm-plugin</artifactId>
                        <configuration>
                            <includes>readme.md</includes>
                            <message>[maven-release-plugin] update readme</message>
                            <!-- disabled here, as it will be pushed separately -->
                            <!-- (either once the release has finished being prepared, or manually) -->
                            <pushChanges>false</pushChanges>
                        </configuration>
                    </plugin>

                    <!-- Source plugin - used to include source code within the release JAR -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- Javadoc plugin - used to include javadoc within the release JAR -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <!-- GPG plugin - used to sign the release JAR before pushing to OSSRH -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>3.1.0</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <configuration>
                                    <!-- Prevent `gpg` from using pinentry programs -->
                                    <gpgArguments>
                                        <arg>--pinentry-mode</arg>
                                        <arg>loopback</arg>
                                    </gpgArguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                </plugins>
            </build>
        </profile>
    </profiles>
</project>
