<?xml version="1.0" encoding="UTF-8"?>
<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>
  <groupId>org.rascalmpl</groupId>
  <artifactId>rascal</artifactId>
  <version>0.43.0-RC3</version>
  <licenses>
    <license>
      <name>BSD-2-Clause</name>
      <url>https://opensource.org/license/BSD-2-Clause</url>
      <distribution>repo</distribution>
      <comments>Note, some older files are still licensed under Eclipse v1</comments>
    </license>
  </licenses>
  <scm>
    <developerConnection>scm:git:ssh://git@github.com/usethesource/rascal.git</developerConnection>
    <tag>v0.43.0-RC3</tag>
  </scm>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
          <exclude>**/*.class</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>.</directory>
        <includes>
          <include>META-INF/RASCAL.MF</include>
          <include>rascal-DEPENDENCIES.txt</include>
        </includes>
      </resource>
      <resource>
        <directory>${project.build.directory}/generated-resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>test</directory>
        <excludes>
          <exclude>**/*.java</exclude>
          <exclude>**/*.class</exclude>
        </excludes>
      </testResource>
      <testResource>
        <directory>test/org/rascalmpl/test/data/</directory>
      </testResource>
      <testResource>
        <directory>src/org/rascalmpl/library/</directory>
      </testResource>
    </testResources>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <versionRange>[1.4.0,)</versionRange>
                    <goals>
                      <goal>exec</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.4.0</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>3.2.1</version>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.5.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.15.0</version>
        <configuration>
          <compilerArgument>-parameters</compilerArgument>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.rascalmpl</groupId>
        <artifactId>rascal-maven-plugin</artifactId>
        <version>${rascal-maven.version}</version>
        <executions>
          <execution>
            <id>default-compile</id>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
            <configuration>
              <parallel>true</parallel>
              <parallelPreChecks>
                <pre>${project.basedir}/src/org/rascalmpl/library/Prelude.rsc</pre>
              </parallelPreChecks>
              <errorsAsWarnings>false</errorsAsWarnings>
              <bin>${project.build.outputDirectory}</bin>
              <srcs>
                <src>${project.basedir}/src/org/rascalmpl/library</src>
              </srcs>
              <libs />
              <ignores>
                <ignore>${project.basedir}/src/org/rascalmpl/library/experiments</ignore>
                <ignore>${project.basedir}/src/org/rascalmpl/library/resource</ignore>
                <ignore>${project.basedir}/src/org/rascalmpl/library/lang/rascal/tests</ignore>
                <ignore>${project.basedir}/src/org/rascalmpl/library/lang/rascal/grammar/tests</ignore>
                <ignore>${project.basedir}/src/org/rascalmpl/library/lang/rascal/syntax/tests</ignore>
              </ignores>
            </configuration>
          </execution>
          <execution>
            <id>default-resources</id>
            <phase>compile</phase>
            <goals>
              <goal>tutor</goal>
            </goals>
            <configuration>
              <isPackageCourse>false</isPackageCourse>
              <errorsAsWarnings>false</errorsAsWarnings>
              <bin>${project.build.outputDirectory}</bin>
              <funding>${project.basedir}/FUNDING</funding>
              <citation>${project.basedir}/CITATION.md</citation>
              <license>${project.basedir}/LICENSE</license>
              <authors>${project.basedir}/AUTHORS.md</authors>
              <sources>|http://github.com/usethesource/rascal/blob/main|</sources>
              <issues>|http://github.com/usethesource/rascal/issues|</issues>
              <version>${project.version}</version>
              <srcs>
                <src>${project.basedir}/src/org/rascalmpl/library</src>
              </srcs>
              <ignores>
                <ignore>${project.basedir}/src/org/rascalmpl/library/lang/rascal</ignore>
                <ignore>${project.basedir}/src/org/rascalmpl/library/experiments</ignore>
                <ignore>${project.basedir}/src/org/rascalmpl/library/lang/rascal/tests</ignore>
                <ignore>${project.basedir}/src/org/rascalmpl/library/lang/rascal/grammar/tests</ignore>
                <ignore>${project.basedir}/src/org/rascalmpl/library/lang/rascal/syntax/tests</ignore>
              </ignores>
            </configuration>
          </execution>
          <execution>
            <id>default-package</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>package</goal>
            </goals>
            <configuration>
              <srcs>
                <src>${project.basedir}/src/org/rascalmpl/library</src>
              </srcs>
              <sourceLookup>|std:///|</sourceLookup>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <bootstrapRascalVersion>0.43.0-BOOT2</bootstrapRascalVersion>
          <parallel>true</parallel>
          <parallelPreChecks>
            <pre>${project.basedir}/src/org/rascalmpl/library/Prelude.rsc</pre>
          </parallelPreChecks>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.5.0</version>
        <configuration>
          <filesets>
            <fileset>
              <directory>${project.basedir}/bin</directory>
              <includes>
                <include>**/*.*</include>
              </includes>
              <followSymlinks>false</followSymlinks>
            </fileset>
          </filesets>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.5.6</version>
        <executions>
          <execution>
            <id>default-test</id>
            <phase>test</phase>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <argLine>-ea
                        -Xmx${rascal.test.memory}G
                        -Dfile.encoding=UTF-8
                        ${argLine}</argLine>
          <includes>
            <include>**/org/rascalmpl/test/AllSuiteParallel.java</include>
            <include>**/org/rascalmpl/test/library/LibraryLangPaths.java</include>
            <include>**/org/rascalmpl/test/value/AllTests.java</include>
            <include>**/org/rascalmpl/test/repl/*Test.java</include>
            <include>**/org/rascalmpl/test/rpc/*Tests.java</include>
            <include>**/org/rascalmpl/util/**/*Test.java</include>
            <include>**/org/rascalmpl/util/**/*Tests.java</include>
            <include>**/org/rascalmpl/uri/**/*Test.java</include>
            <include>**/org/rascalmpl/*Test.java</include>
          </includes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.14</version>
        <executions>
          <execution>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>report</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.11.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>tree</goal>
            </goals>
            <configuration>
              <output>rascal-DEPENDENCIES.txt</output>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <version>3.3.1</version>
        <configuration>
          <tagNameFormat>v@{project.version}</tagNameFormat>
          <arguments>-Drascal.compile.skip -Drascal.tutor.skip -DskipTests</arguments>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <version>2.7.1</version>
        <executions>
          <execution>
            <id>download-licenses</id>
            <goals>
              <goal>download-licenses</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.6.2</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <filters>
                <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.RSA</exclude>
                    <exclude>plugin.xml</exclude>
                  </excludes>
                </filter>
                <filter>
                  <artifact>org.rascalmpl:typepal</artifact>
                  <excludes>
                    <exclude>META-INF/*</exclude>
                    <exclude>examples/**</exclude>
                    <exclude>src/examples/**</exclude>
                    <exclude>src/analysis/typepal/**</exclude>
                    <exclude>docs/Packages/Typepal/**</exclude>
                    <exclude>docs/**</exclude>
                    <exclude>rascal/analysis/typepal/**</exclude>
                    <exclude>**/*.tpl</exclude>
                  </excludes>
                </filter>
              </filters>
              <relocations>
                <relocation>
                  <pattern>analysis/typepal</pattern>
                  <shadedPattern>org/rascalmpl/typepal/analysis/typepal</shadedPattern>
                </relocation>
              </relocations>
              <transformers>
                <transformer />
                <transformer />
                <transformer>
                  <manifestEntries>
                    <Name>rascal</Name>
                    <Multi-Release>true</Multi-Release>
                    <Main-Class>org.rascalmpl.shell.RascalShell</Main-Class>
                    <Specification-Version>${project.version}</Specification-Version>
                    <Specification-Vendor>http://www.usethesource.io</Specification-Vendor>
                  </manifestEntries>
                </transformer>
                <transformer>
                  <resource>org/rascalmpl/uri/resolvers.config</resource>
                </transformer>
                <transformer>
                  <resource>io/usethesource/vallang/type/types.config</resource>
                </transformer>
                <transformer>
                  <resource>META-INF/sisu/javax.inject.Named</resource>
                </transformer>
                <transformer />
                <transformer />
                <transformer>
                  <addHeader>false</addHeader>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-transform-maven-shade-plugin-extensions</artifactId>
            <version>0.2.0</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.6.3</version>
        <executions>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>(3.8,)</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>compiler-tests</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <executions>
              <execution>
                <id>default-test</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>test-compiler-tests</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <argLine>-Xmx${rascal.test.memory}G
                                -Dfile.encoding=UTF-8</argLine>
              <includes>
                <include>**/org/rascalmpl/compiler/**/*Tests.java</include>
                <include>**/org/rascalmpl/compiler/**/*Test.java</include>
              </includes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  <repositories>
    <repository>
      <id>usethesource</id>
      <url>https://releases.usethesource.io/maven/</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>usethesource</id>
      <url>https://releases.usethesource.io/maven/</url>
    </pluginRepository>
  </pluginRepositories>
  <properties>
    <maven.compiler.release>11</maven.compiler.release>
    <exec.mainClass>org.rascalmpl.shell.RascalShell</exec.mainClass>
    <rascal.test.memory>3</rascal.test.memory>
    <rascal-maven.version>0.31.0</rascal-maven.version>
    <jline.version>3.29.0</jline.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven-version>3.9.16</maven-version>
  </properties>
</project>
