<?xml version="1.0" encoding="UTF-8"?>
<!--
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
  * regarding copyright ownership. The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License. You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
-->
<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>

  <parent>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-parent</artifactId>
    <version>69</version>
  </parent>

  <groupId>org.apache.bcel</groupId>
  <artifactId>bcel</artifactId>
  <packaging>jar</packaging>
  <version>6.9.0</version>
  <name>Apache Commons BCEL</name>
  <description>Apache Commons Bytecode Engineering Library</description>

  <url>https://commons.apache.org/proper/commons-bcel</url>
  <inceptionYear>2004</inceptionYear>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <project.build.outputTimestamp>2024-04-21T16:51:47Z</project.build.outputTimestamp>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <commons.componentid>bcel</commons.componentid>
    <commons.module.name>org.apache.bcel</commons.module.name>
    <commons.release.version>6.9.0</commons.release.version>
    <commons.release.next>6.9.1</commons.release.next>
    <commons.release.isDistModule>true</commons.release.isDistModule>
    <commons.rc.version>RC1</commons.rc.version>
    <commons.bc.version>6.8.2</commons.bc.version>
    <commons.release.desc>(Java 8 or above)</commons.release.desc>
    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-bcel</commons.scmPubUrl>
    <commons.distSvnStagingUrl>scm:svn:https://dist.apache.org/repos/dist/dev/commons/${commons.componentid}</commons.distSvnStagingUrl>
    <!-- Configuration properties for the OSGi maven-bundle-plugin -->
    <commons.osgi.symbolicName>org.apache.${commons.componentid}</commons.osgi.symbolicName>
    <commons.osgi.export>org.apache.bcel.*;version=${project.version};-noimport:=true</commons.osgi.export>
    <commons.osgi.import>*</commons.osgi.import>
    <commons.osgi.dynamicImport />
    <commons.osgi.private />
    <commons.jira.id>BCEL</commons.jira.id>
    <commons.jira.pid>12314220</commons.jira.pid>
    <mockito.version>4.11.0</mockito.version>
    <assertj.version>3.25.3</assertj.version>
    <jna.version>5.14.0</jna.version>
    <japicmp.skip>false</japicmp.skip>
    <commons.jacoco.haltOnFailure>true</commons.jacoco.haltOnFailure>

    <!-- JaCoCo on Java 8 is different from other versions. On JDK9+ there is a profile -->
    <!-- JaCoCo: Don't make code coverage worse than: -->
    <commons.jacoco.classRatio>0.89</commons.jacoco.classRatio>
    <commons.jacoco.instructionRatio>0.65</commons.jacoco.instructionRatio>
    <commons.jacoco.methodRatio>0.70</commons.jacoco.methodRatio>
    <commons.jacoco.branchRatio>0.59</commons.jacoco.branchRatio>
    <commons.jacoco.lineRatio>0.68</commons.jacoco.lineRatio>
    <commons.jacoco.complexityRatio>0.58</commons.jacoco.complexityRatio>
  </properties>

  <distributionManagement>
    <site>
      <id>apache.website</id>
      <name>Apache Commons Site</name>
      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-bcel/</url>
    </site>
  </distributionManagement>

  <ciManagement>
    <system>GitHub</system>
    <url>https://github.com/apache/commons-bcel/actions</url>
  </ciManagement>

  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/BCEL</url>
  </issueManagement>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-bcel.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-bcel.git</developerConnection>
    <url>https://gitbox.apache.org/repos/asf?p=commons-bcel.git</url>
  </scm>

  <build>
    <defaultGoal>clean verify apache-rat:check japicmp:cmp checkstyle:check pmd:check spotbugs:check javadoc:javadoc</defaultGoal>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>src/test/resources/**</exclude>
            <exclude>docs/*.bib</exclude>
            <exclude>docs/*.mdl</exclude>
            <exclude>docs/eps/*</exclude>
            <exclude>**/*.eps</exclude>
            <exclude>**/*.bnf</exclude>
            <exclude>**/*.mini</exclude>
            <exclude>TODO.JustIce</exclude>
            <exclude>src/examples/Mini/MiniParser$JJCalls</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
        <!-- Temporary fix for BCEL-293, remove this after this has implemented in parent pom -->
        <configuration>
          <archive combine.children="append">
            <manifestEntries>
              <Automatic-Module-Name>org.apache.bcel</Automatic-Module-Name>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <testExcludes>
            <testExclude>**/*Benchmark*</testExclude>
          </testExcludes>
          <!-- MethodParameters attribute in class file -->
          <parameters>true</parameters>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
  	      <systemPropertyVariables>
            <!-- Suppress the stats, but keep the test as it exercises the code -->
			<PerformanceTest.report>false</PerformanceTest.report>
		  </systemPropertyVariables>
          <includes>
            <include>**/*TestCase.java</include>
            <include>**/PerformanceTest.java</include>
          </includes>
          <excludes>
            <exclude>**/Abstract*</exclude>
            <!-- Takes rather a long time (especially rt.jar) ; only needs to be done occasionally -->
            <exclude>**/JDKClassDumpTestCase.java</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <!-- These need to be specified because CP includes a descriptor -->
          <descriptors>
            <descriptor>src/assembly/bin.xml</descriptor>
            <descriptor>src/assembly/src.xml</descriptor>
          </descriptors>
          <tarLongFileMode>gnu</tarLongFileMode>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <configuration>
          <ignorePathsToDelete>
            <ignorePathToDelete>javadocs</ignorePathToDelete>
          </ignorePathsToDelete>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <configLocation>${basedir}/src/conf/checkstyle.xml</configLocation>
          <!-- Needed to define config_loc -->
          <propertyExpansion>config_loc=${basedir}</propertyExpansion>
          <enableRulesSummary>false</enableRulesSummary>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.github.siom79.japicmp</groupId>
        <artifactId>japicmp-maven-plugin</artifactId>
      </plugin>    
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <configuration>
          <threshold>Normal</threshold>
          <effort>Default</effort>
          <excludeFilterFile>src/conf/spotbugs-exclude-filter.xml</excludeFilterFile>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <configuration>
          <targetJdk>${maven.compiler.target}</targetJdk>
          <rulesets>
            <ruleset>${basedir}/src/conf/pmd-ruleset.xml</ruleset>
          </rulesets>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>merge-all-jacoco</id>
            <goals>
              <goal>merge</goal>
            </goals>
            <phase>install</phase>
            <configuration> 
              <fileSets>
                <fileSet>
                  <directory>${project.build.directory}</directory>
                  <includes>
                    <include>*.exec</include>
                  </includes>
                </fileSet>
              </fileSets>
            </configuration> 
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <configLocation>${basedir}/src/conf/checkstyle.xml</configLocation>
          <!-- Needed to define config_loc -->
          <propertyExpansion>config_loc=${basedir}</propertyExpansion>
          <enableRulesSummary>false</enableRulesSummary>
        </configuration>
        <!-- We need to specify reportSets because 2.9.1 creates two reports -->
        <reportSets>
          <reportSet>
            <reports>
              <report>checkstyle</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <configuration>
          <targetJdk>${maven.compiler.target}</targetJdk>
          <linkXRef>true</linkXRef>
        </configuration>
      </plugin>
      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>taglist-maven-plugin</artifactId>
         <version>3.0.0</version>
         <configuration>
          <tags>
            <tag>TODO</tag>
            <tag>NOPMD</tag>
            <tag>NOTE</tag>
          </tags>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>${commons.rat.version}</version>
        <configuration>
          <excludes>
            <exclude>src/test/resources/**</exclude>
            <exclude>docs/*.bib</exclude>
            <exclude>docs/*.mdl</exclude>
            <exclude>docs/eps/*</exclude>
            <exclude>**/*.eps</exclude>
            <exclude>**/*.bnf</exclude>
            <exclude>**/*.mini</exclude>
            <exclude>TODO.JustIce</exclude>
            <exclude>src/examples/Mini/MiniParser$JJCalls</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.github.siom79.japicmp</groupId>
        <artifactId>japicmp-maven-plugin</artifactId>
      </plugin>    
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <configuration>
          <threshold>Normal</threshold>
          <effort>Default</effort>
          <excludeFilterFile>src/conf/spotbugs-exclude-filter.xml</excludeFilterFile>
          <!-- Hacky: Don't allow new SpotBugs errors --> 
          <maxAllowedViolations>9</maxAllowedViolations>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>${mockito.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.assertj</groupId>
      <artifactId>assertj-core</artifactId>
      <version>${assertj.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>net.java.dev.jna</groupId>
      <artifactId>jna</artifactId>
      <version>${jna.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>net.java.dev.jna</groupId>
      <artifactId>jna-platform</artifactId>
      <version>${jna.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.14.0</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.16.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <!-- BCEL-336 refers to this specific version.  -->
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>6.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-exec</artifactId>
      <version>1.4.0</version>
      <scope>test</scope>
    </dependency>
    <!-- START very old jars for Justice verifier -->
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.5.3</version>
      <scope>test</scope>
    </dependency>
    <!-- END very old jars for Justice verifier -->
    <dependency>
      <!-- Eclipse compiler: useful to generate specific .class file patterns -->
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>ecj</artifactId>
      <version>3.26.0</version> <!-- last JDK8-compatible version -->
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-stdlib</artifactId>
      <version>1.9.23</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <profiles>
    <!-- Profile to build and run PerformanceTest. Use 'mvn test -Pjdk-rt' -->
    <profile>
      <id>jdk-rt</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${commons.surefire.version}</version>
            <configuration>
              <includes>
                <include>**/PerformanceTest.java</include>
              </includes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Profile to build and run the benchmarks. Use 'mvn test -Pbenchmark', and add '-Dbenchmark=foo' to run only the foo benchmark -->
    <profile>
      <id>benchmark</id>

      <properties>
        <skipTests>true</skipTests>
        <benchmark>org.apache</benchmark>
        <jmh.version>1.37</jmh.version>
      </properties>

      <dependencies>
        <dependency>
          <groupId>org.openjdk.jmh</groupId>
          <artifactId>jmh-core</artifactId>
          <version>${jmh.version}</version>
          <scope>test</scope>
        </dependency>

        <dependency>
          <groupId>org.openjdk.jmh</groupId>
          <artifactId>jmh-generator-annprocess</artifactId>
          <version>${jmh.version}</version>
          <scope>test</scope>
        </dependency>

        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.16.1</version>
          <scope>test</scope>
        </dependency>

        <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-collections4</artifactId>
          <version>4.4</version>
          <scope>test</scope>
        </dependency>
      </dependencies>

      <build>
        <plugins>
          <!-- Enable the compilation of the benchmarks -->
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${commons.compiler.version}</version>
            <configuration combine.self="override">
              <testIncludes>
                <testInclude>**/*</testInclude>
              </testIncludes>
            </configuration>
          </plugin>
          <!-- Hook the benchmarks to the test phase -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>benchmark</id>
                <phase>test</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <classpathScope>test</classpathScope>
                  <executable>java</executable>
                  <arguments>
                    <argument>-classpath</argument>
                    <classpath />
                    <argument>org.openjdk.jmh.Main</argument>
                    <argument>-rf</argument>
                    <argument>json</argument>
                    <argument>-rff</argument>
                    <argument>target/jmh-result.json</argument>
                    <argument>${benchmark}</argument>
                  </arguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!-- Java 9 and up -->
      <id>java-9-up</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <properties>
        <!-- JaCoCo: Don't make code coverage worse than: -->
        <commons.jacoco.classRatio>0.90</commons.jacoco.classRatio>
        <commons.jacoco.instructionRatio>0.65</commons.jacoco.instructionRatio>
        <commons.jacoco.methodRatio>0.70</commons.jacoco.methodRatio>
        <commons.jacoco.branchRatio>0.58</commons.jacoco.branchRatio>
        <commons.jacoco.lineRatio>0.68</commons.jacoco.lineRatio>
        <commons.jacoco.complexityRatio>0.58</commons.jacoco.complexityRatio>
      </properties>
    </profile>
  </profiles>

  <developers>
    <developer>
      <name>Dave Brosius</name>
      <id>dbrosius</id>
      <email>dbrosius at mebigfatguy.com</email>
    </developer>
    <developer>
      <name>Torsten Curdt</name>
      <id>tcurdt</id>
      <email>tcurdt at apache.org</email>
      <organization>ASF</organization>
      <organizationUrl>http://www.apache.org/</organizationUrl>
      <timezone>+1</timezone>
    </developer>
    <developer>
      <name>Markus Dahm</name>
      <id>mdahm</id>
      <email>m.dahm at gmx.de</email>
      <organization>it-frameworksolutions</organization>
    </developer>
    <developer>
      <name>Jason van Zyl</name>
      <email>jason at zenplex.com</email>
    </developer>
    <developer>
      <id>ggregory</id>
      <name>Gary Gregory</name>
      <email>ggregory at apache.org</email>
      <url>https://www.garygregory.com</url>
      <organization>The Apache Software Foundation</organization>
      <organizationUrl>https://www.apache.org/</organizationUrl>      
      <roles>
        <role>PMC Member</role>
      </roles>
      <timezone>America/New_York</timezone>
      <properties>
        <picUrl>https://people.apache.org/~ggregory/img/garydgregory80.png</picUrl>
      </properties>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <name>Enver Haase</name>
      <email>enver at convergence.de</email>
    </contributor>
    <contributor>
      <name>David Dixon-Peugh</name>
      <email>dixonpeugh at yahoo.com</email>
    </contributor>
    <contributor>
      <name>Patrick Beard</name>
      <email>beard at netscape.com</email>
    </contributor>
    <contributor>
      <name>Conor MacNeill</name>
      <email>conor at cortexbusiness.com.au</email>
    </contributor>
    <contributor>
      <name>Costin Manolache</name>
      <email>cmanolache at yahoo.com</email>
    </contributor>
    <contributor>
      <name>Bill Pugh</name>
      <email>bill.pugh at gmail.com</email>
    </contributor>
    <contributor>
      <name>First Hop Ltd / Torsten Rueger</name>
    </contributor>
    <contributor>
      <name>Jérôme Leroux</name>
    </contributor>
    <contributor>
      <name>Mark Roberts</name>
    </contributor>
    <contributor>
      <name>Sam Yoon</name>
    </contributor>
    <contributor>
      <name>Arturo Bernal</name>
    </contributor>
  </contributors>
</project>
