<?xml version="1.0" encoding="UTF-8"?>
<!--
 Copyright (C) 2010 ZXing authors

 Licensed 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>

  <groupId>com.google.zxing</groupId>
  <artifactId>zxing-parent</artifactId>
  <version>3.5.1</version>
  <packaging>pom</packaging>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>${zxing.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>android-core</artifactId>
        <version>${zxing.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>android-integration</artifactId>
        <version>${zxing.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>javase</artifactId>
        <version>${zxing.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <modules>
    <module>core</module>
    <module>javase</module>
    <!-- android modules are activated by a profile below -->
    <module>zxingorg</module>
    <!-- appspot app activated by a profile below -->
  </modules>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <android.home>${env.ANDROID_HOME}</android.home>
    <proguard.plugin.version>2.6.0</proguard.plugin.version>
    <!-- This can't reference project.version as some subprojects version differently -->
    <zxing.version>3.5.1</zxing.version>
    <android.platform>22</android.platform>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <inherited>false</inherited>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>clirr-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.1.0</version>
          <executions>
            <execution>
              <id>enforce</id>
              <configuration>
                <rules>
                  <requireModuleConvergence />
                  <requireUpperBoundDeps />
                  <dependencyConvergence />
                  <requireMavenVersion>
                    <version>3.3.9</version>
                  </requireMavenVersion>
                  <requireJavaVersion>
                    <version>${java.version}</version>
                  </requireJavaVersion>
                </rules>
              </configuration>
              <goals>
                <goal>enforce</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.10.1</version>
          <configuration>
            <source>${java.version}</source>
            <target>${java.version}</target>
            <compilerArgs>
              <arg>-Xlint:all</arg>
              <arg>-Xlint:-serial</arg>
            </compilerArgs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.1</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.4.1</version>
          <configuration>
            <source>${java.version}</source>
            <quiet>true</quiet>
            <notimestamp>true</notimestamp>
            <encoding>${project.build.sourceEncoding}</encoding>
            <docencoding>${project.reporting.outputEncoding}</docencoding>
            <doclint>all</doclint>
          </configuration>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.2.0</version>
          <configuration>
            <filesets>
              <fileset>
                <directory>.</directory>
                <includes>
                  <include>**/classes/**</include>
                  <include>**/gwt-unitCache/**</include>
                  <include>**/webapp/generator/**</include>
                  <include>**/WEB-INF/deploy/**</include>
                </includes>
              </fileset>
            </filesets>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.4.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jarsigner-plugin</artifactId>
          <version>3.0.0</version>
          <executions>
            <execution>
              <id>signing</id>
              <goals>
                <goal>sign</goal>
              </goals>
              <phase>package</phase>
              <configuration>
                <includes>
                  <include>target/*.apk</include>
                </includes>
                <keystore>../private/ZXing.keystore</keystore>
                <alias>zxing</alias>
                <arguments>
                  <argument>-sigalg</argument>
                  <argument>MD5withRSA</argument>
                  <argument>-digestalg</argument>
                  <argument>SHA1</argument>
                </arguments>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.0.0-M6</version>
          <configuration>
            <mavenExecutorId>forked-path</mavenExecutorId>
            <tagNameFormat>zxing-@{project.version}</tagNameFormat>
            <releaseProfiles>release</releaseProfiles>
            <goals>deploy</goals>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-plugin</artifactId>
          <version>2.0.0-M2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.4.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>3.0.1</version>
          <executions>
            <execution>
              <id>sign-artifacts</id>
              <phase>verify</phase>
              <goals>
                <goal>sign</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <keyname>Sean Owen (ZXing) &lt;srowen@gmail.com&gt;</keyname>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M7</version>
          <configuration>
            <forkCount>0.5C</forkCount>
            <systemPropertyVariables>
              <java.awt.headless>true</java.awt.headless>
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.3.2</version>
        </plugin>
        <plugin>
          <groupId>com.simpligility.maven.plugins</groupId>
          <artifactId>android-maven-plugin</artifactId>
          <version>4.6.0</version>
          <extensions>true</extensions>
          <executions>
            <execution>
              <id>android-zipalign</id>
              <phase>package</phase>
              <goals>
                <goal>zipalign</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <sdk>
              <path>${android.home}</path>
              <platform>${android.platform}</platform>
            </sdk>
            <artifactSet>
              <excludes>
                <!-- Make sure Android SDK jar isn't included -->
                <exclude>com.google.android:android</exclude>
              </excludes>
            </artifactSet>
            <proguard>
              <skip>true</skip>
            </proguard>
            <sign>
              <debug>true</debug>
            </sign>
            <zipalign>
              <skip>false</skip>
            </zipalign>
            <release>false</release>
            <apkDebug>true</apkDebug>
            <androidManifestFile>AndroidManifest.xml</androidManifestFile>
            <resourceDirectory>res</resourceDirectory>
            <assetsDirectory>assets</assetsDirectory>
            <nativeLibrariesDirectory>libs</nativeLibrariesDirectory>
            <disableConflictingDependenciesWarning>true</disableConflictingDependenciesWarning>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.wvengen</groupId>
          <artifactId>proguard-maven-plugin</artifactId>
          <version>${proguard.plugin.version}</version>
          <executions>
            <execution>
              <phase>package</phase>
              <goals>
                <goal>proguard</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <addMavenDescriptor>true</addMavenDescriptor>
            <obfuscate>false</obfuscate>
            <options>
              <option>-target ${java.version}</option>
              <option>-dontshrink</option>
              <option>-keep class * { !private *; }</option>
              <option>-verbose</option>
              <option>-optimizationpasses 3</option>
            </options>
            <libs>
              <lib>${java.home}/lib/rt.jar</lib>
            </libs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>4.0.0-M3</version>
          <inherited>false</inherited>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.2.0</version>
          <configuration>
            <configLocation>src/checkstyle/checkstyle.xml</configLocation>
            <includeTestSourceDirectory>true</includeTestSourceDirectory>
          </configuration>
          <executions>
            <execution>
              <id>validate</id>
              <phase>validate</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>9.3</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>0.15</version>
          <configuration>
            <consoleOutput>true</consoleOutput>
            <ignoreErrors>true</ignoreErrors>
            <excludes>
              <exclude>.reuse/*</exclude>
              <exclude>**/.*</exclude>
              <exclude>**/.settings/**</exclude>
              <exclude>**/*.iml</exclude>
              <exclude>**/*.md</exclude>
              <exclude>**/*.textile</exclude>
              <exclude>**/*.txt</exclude>
              <exclude>**/*.html</exclude>
              <exclude>**/*.js</exclude>
              <exclude>**/*.css</exclude>
              <exclude>**/*.properties</exclude>
              <exclude>**/*.cfg</exclude>
              <exclude>**/*.config</exclude>
              <exclude>**/*.yml</exclude>
              <exclude>**/*.yaml</exclude>
              <exclude>**/gen/**</exclude>
              <exclude>**/resources/**</exclude>
              <exclude>**/symbolMaps/**</exclude>
              <exclude>**/target/**</exclude>
              <exclude>**/dependency-reduced-pom.xml</exclude>
              <exclude>docs/</exclude>
              <exclude>private/**</exclude>
              <exclude>CHANGES</exclude>
              <excludeSubProjects>false</excludeSubProjects>
            </excludes>
          </configuration>
          <executions>
            <execution>
              <phase>verify</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>clirr-maven-plugin</artifactId>
          <version>2.8</version>
          <executions>
            <execution>
              <id>check-api</id>
              <phase>verify</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <ignoredDifferencesFile>${project.parent.basedir}/src/clirr/ignored-differences.xml</ignoredDifferencesFile>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.8</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>
      </plugins>
    </pluginManagement>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <inherited>false</inherited>
        <reportSets>
          <reportSet>
            <reports>
              <!-- <report>ci-management</report> -->
              <!-- <report>dependencies</report> -->
              <!-- <report>dependency-convergence</report> -->
              <report>dependency-info</report>
              <report>dependency-management</report>
              <!-- <report>distribution-management</report> -->
              <report>index</report>
              <report>issue-management</report>
              <report>licenses</report>
              <report>mailing-lists</report>
              <!-- <report>modules</report> -->
              <!-- <report>plugin-management</report> -->
              <!-- <report>plugins</report> -->
              <!-- <report>project-team</report> -->
              <report>scm</report>
              <!-- <report>summary</report> -->
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <inherited>false</inherited>
        <reportSets>
          <reportSet>
            <id>aggregate</id>
            <inherited>false</inherited>
            <reports>
              <report>aggregate</report>
            </reports>
            <configuration>
              <excludePackageNames>com.google.zxing.client.android*,com.google.zxing.client.glass*,com.google.zxing.web.generator*</excludePackageNames>
              <groups>
                <group>
                  <title>Common support code</title>
                  <packages>com.google.zxing:com.google.zxing.common*:com.google.zxing.client.result*</packages>
                </group>
                <group>
                  <title>One-dimensional barcode (UPC, EAN, etc) support</title>
                  <packages>com.google.zxing.oned</packages>
                </group>
                <group>
                  <title>QR Code support</title>
                  <packages>com.google.zxing.qrcode*</packages>
                </group>
                <group>
                  <title>Data Matrix support</title>
                  <packages>com.google.zxing.datamatrix*</packages>
                </group>
                <group>
                  <title>PDF417 barcode support</title>
                  <packages>com.google.zxing.pdf417*</packages>
                </group>
                <group>
                  <title>Aztec barcode support</title>
                  <packages>com.google.zxing.aztec*</packages>
                </group>
                <group>
                  <title>MaxiCode support</title>
                  <packages>com.google.zxing.maxicode*</packages>
                </group>
                <group>
                  <title>RSS barcode support</title>
                  <packages>com.google.zxing.oned.rss*</packages>
                </group>
                <group>
                  <title>Multiple barcode scanning support</title>
                  <packages>com.google.zxing.multi*</packages>
                </group>
                <group>
                  <title>Web-based decoder app</title>
                  <packages>com.google.zxing.web</packages>
                </group>
                <group>
                  <title>Web-based App Engine encoder app</title>
                  <packages>com.google.zxing.web.generator*</packages>
                </group>
                <group>
                  <title>JavaSE utilities and support</title>
                  <packages>com.google.zxing.client.j2se*</packages>
                </group>
                <group>
                  <title>Android Intent integration</title>
                  <packages>com.google.zxing.integration.android*</packages>
                </group>
              </groups>
            </configuration>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
    <excludeDefaults>true</excludeDefaults>
  </reporting>

  <name>ZXing</name>
  <description>Parent Maven project for ZXing modules</description>
  <url>https://github.com/zxing/zxing</url>
  <inceptionYear>2007</inceptionYear>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <developers>
    <developer>
      <id>zxing-authors</id>
      <name>ZXing Authors</name>
    </developer>
  </developers>

  <issueManagement>
    <system>Github</system>
    <url>https://github.com/zxing/zxing/issues</url>
  </issueManagement>
  <mailingLists>
    <mailingList>
      <name>zxing Google Group</name>
      <archive>https://groups.google.com/forum/?fromgroups#!forum/zxing</archive>
    </mailingList>
    <mailingList>
      <name>StackOverflow tag</name>
      <archive>https://stackoverflow.com/questions/tagged/zxing</archive>
    </mailingList>
  </mailingLists>
  <scm>
    <connection>scm:git:https://github.com/zxing/zxing.git</connection>
    <developerConnection>scm:git:https://github.com/zxing/zxing.git</developerConnection>
    <url>https://github.com/zxing/zxing</url>
    <tag>zxing-3.5.1</tag>
  </scm>

  <distributionManagement>
    <repository>
      <id>sonatype-nexus-staging</id>
      <name>Nexus Release Repository</name>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
    <snapshotRepository>
      <id>sonatype-nexus-snapshots</id>
      <name>Sonatype Nexus Snapshots</name>
      <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    </snapshotRepository>
    <site>
      <id>zxing.website</id>
      <name>ZXing documentation</name>
      <url>file:docs/</url>
    </site>
  </distributionManagement>

  <repositories>
    <repository>
      <id>google-maven-central</id>
      <name>GCS Maven Central mirror</name>
      <url>https://maven-central.storage-download.googleapis.com/maven2/</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>google-maven-central</id>
      <name>GCS Maven Central mirror</name>
      <url>https://maven-central.storage-download.googleapis.com/maven2/</url>
    </pluginRepository>
  </pluginRepositories>

  <profiles>
    <profile>
      <id>build-android</id>
      <activation>
        <property>
          <name>env.ANDROID_HOME</name>
        </property>
        <jdk>[,9)</jdk> <!-- Android won't necessarily work with JDK 9 -->
      </activation>
      <modules>
        <module>android-core</module>
        <module>android-integration</module>
        <module>android</module>
      </modules>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>com.google.android</groupId>
            <artifactId>android</artifactId>
            <version>${android.platform}</version>
            <scope>system</scope>
            <!-- ANDROID_HOME must be absolute, but redundant leading / may help Gradle Spring Boot plugin -->
            <systemPath>/${android.home}/platforms/android-${android.platform}/android.jar</systemPath>
          </dependency>
        </dependencies>
      </dependencyManagement>
    </profile>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>android-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jarsigner-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>com.simpligility.maven.plugins</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <configuration>
              <proguard>
                <skip>false</skip>
                <config>proguard.cfg</config>
              </proguard>
              <!-- repeat Android jar as library jar, as plugin ignores scope system deps -->
              <proguardOptions>
                <option>-libraryjars</option>
                <option>${android.home}/platforms/android-${android.platform}/android.jar</option>
              </proguardOptions>
              <sign>
                <debug>false</debug>
              </sign>
              <release>true</release>
              <apkDebug>false</apkDebug>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>jacoco</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>appspot</id>
      <activation>
        <jdk>[,9)</jdk> <!-- Appspot won't work with JDK 9 -->
      </activation>
      <modules>
         <module>zxing.appspot.com</module>
      </modules>
    </profile>
    <profile>
      <id>javadoc-9</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration combine.children="append">
                <!-- Choose HTML5 output over deprecated HTML 4.01 -->
                <additionalOptions>-html5</additionalOptions>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
  </profiles>

</project>
