Ticket #8269: 8269.2.patch

File 8269.2.patch, 68.9 KB (added by taylor.smock, 6 months ago)

Sample POM files for JOSM core and two plugins

  • new file plugins/apache-commons/pom.xml

    Subject: [PATCH] Sample POM files for JOSM core and two plugins
    ---
    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    diff --git a/plugins/apache-commons/pom.xml b/plugins/apache-commons/pom.xml
    new file mode 100644
    - +  
     1<project xmlns="http://maven.apache.org/POM/4.0.0">
     2    <modelVersion>4.0.0</modelVersion>
     3    <parent>
     4        <groupId>org.openstreetmap.josm.plugins</groupId>
     5        <artifactId>plugin-root</artifactId>
     6        <version>1.0-SNAPSHOT</version>
     7        <relativePath>../pom.xml</relativePath>
     8    </parent>
     9    <artifactId>apache-commons</artifactId>
     10    <version>1.0-SNAPSHOT</version>
     11    <properties>
     12        <plugin.src.dir>src</plugin.src.dir>
     13        <plugin.main.version>10580</plugin.main.version>
     14        <plugin.canloadatruntime>true</plugin.canloadatruntime>
     15        <plugin.author>nokutu; Don-vip</plugin.author>
     16        <plugin.class>org.openstreetmap.josm.plugins.commons.CommonsPlugin</plugin.class>
     17        <plugin.description>Provides Apache Commons library components. Not meant to be installed directly by users, but rather as a dependency for other plugins.</plugin.description>
     18        <plugin.stage>10</plugin.stage>
     19    </properties>
     20    <dependencies>
     21        <dependency>
     22            <groupId>com.github.luben</groupId>
     23            <artifactId>zstd-jni</artifactId>
     24            <version>1.5.5-6</version>
     25            <scope>compile</scope>
     26        </dependency>
     27        <dependency>
     28            <groupId>org.apache.commons</groupId>
     29            <artifactId>commons-collections4</artifactId>
     30            <version>4.4</version>
     31            <scope>compile</scope>
     32        </dependency>
     33        <dependency>
     34            <groupId>org.apache.commons</groupId>
     35            <artifactId>commons-compress</artifactId>
     36            <!-- version is in parent pom -->
     37            <scope>compile</scope>
     38        </dependency>
     39        <dependency>
     40            <groupId>org.apache.commons</groupId>
     41            <artifactId>commons-imaging</artifactId>
     42            <version>1.0-alpha3</version>
     43            <scope>compile</scope>
     44        </dependency>
     45        <dependency>
     46            <groupId>commons-io</groupId>
     47            <artifactId>commons-io</artifactId>
     48            <version>2.15.1</version>
     49            <scope>compile</scope>
     50        </dependency>
     51        <dependency>
     52            <groupId>commons-logging</groupId>
     53            <artifactId>commons-logging</artifactId>
     54            <version>1.2</version>
     55            <scope>compile</scope>
     56        </dependency>
     57        <dependency>
     58            <groupId>org.apache.commons</groupId>
     59            <artifactId>commons-lang3</artifactId>
     60            <!-- version is in parent pom -->
     61            <scope>compile</scope>
     62        </dependency>
     63        <dependency>
     64            <groupId>org.apache.commons</groupId>
     65            <artifactId>commons-math3</artifactId>
     66            <version>3.6.1</version>
     67            <scope>compile</scope>
     68        </dependency>
     69        <dependency>
     70            <groupId>org.apache.commons</groupId>
     71            <artifactId>commons-text</artifactId>
     72            <version>1.11.0</version>
     73            <scope>compile</scope>
     74        </dependency>
     75        <dependency>
     76            <groupId>org.brotli</groupId>
     77            <artifactId>dec</artifactId>
     78            <version>0.1.2</version>
     79            <scope>compile</scope>
     80        </dependency>
     81        <dependency>
     82            <groupId>org.tukaani</groupId>
     83            <artifactId>xz</artifactId>
     84            <!-- version is in parent pom -->
     85            <scope>compile</scope>
     86        </dependency>
     87    </dependencies>
     88</project>
  • new file plugins/apache-http/pom.xml

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    diff --git a/plugins/apache-http/pom.xml b/plugins/apache-http/pom.xml
    new file mode 100644
    - +  
     1<project xmlns="http://maven.apache.org/POM/4.0.0">
     2    <modelVersion>4.0.0</modelVersion>
     3    <parent>
     4        <groupId>org.openstreetmap.josm.plugins</groupId>
     5        <artifactId>plugin-root</artifactId>
     6        <version>1.0-SNAPSHOT</version>
     7        <relativePath>../pom.xml</relativePath>
     8    </parent>
     9    <artifactId>apache-http</artifactId>
     10    <version>1.0-SNAPSHOT</version>
     11    <properties>
     12        <plugin.src.dir>${project.basedir}/src</plugin.src.dir>
     13        <plugin.main.version>10580</plugin.main.version>
     14        <plugin.author>Don-vip</plugin.author>
     15        <plugin.class>org.openstreetmap.josm.plugins.http.HttpPlugin</plugin.class>
     16        <plugin.description>Provides Apache HTTP library. Not meant to be installed directly by users, but rather as a dependency for other plugins.</plugin.description>
     17        <plugin.requires>apache-commons;jna</plugin.requires>
     18        <plugin.stage>15</plugin.stage>
     19    </properties>
     20    <dependencies>
     21        <dependency>
     22            <groupId>org.openstreetmap.josm.plugins</groupId>
     23            <artifactId>apache-commons</artifactId>
     24            <version>1.0-SNAPSHOT</version>
     25            <scope>provided</scope>
     26        </dependency>
     27        <dependency>
     28            <groupId>org.apache.httpcomponents.client5</groupId>
     29            <artifactId>httpclient5</artifactId>
     30            <version>5.2.1</version>
     31            <scope>compile</scope>
     32        </dependency>
     33    </dependencies>
     34    <build>
     35        <plugins>
     36            <plugin>
     37                <groupId>com.diffplug.spotless</groupId>
     38                <artifactId>spotless-maven-plugin</artifactId>
     39                <version>2.30.0</version>
     40                <configuration>
     41                    <java>
     42                        <eclipse>
     43                            <version>4.21.0</version>
     44                            <file>${project.basedir}/../00_core_tools/eclipse/formatter.xml</file>
     45                        </eclipse>
     46                        <removeUnusedImports/>
     47                        <licenseHeader>
     48                            <content>// License: GPL. For details, see LICENSE file.</content>
     49                        </licenseHeader>
     50                    </java>
     51                </configuration>
     52                <executions>
     53                    <execution>
     54                        <goals>
     55                            <goal>check</goal>
     56                        </goals>
     57                    </execution>
     58                </executions>
     59            </plugin>
     60        </plugins>
     61    </build>
     62</project>
  • core/scripts/BuildProjectionDefinitions.java

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    diff --git a/core/scripts/BuildProjectionDefinitions.java b/core/scripts/BuildProjectionDefinitions.java
    a b  
    1313import java.util.Locale;
    1414import java.util.Map;
    1515import java.util.TreeMap;
     16import java.util.logging.Logger;
    1617import java.util.regex.Matcher;
    1718import java.util.regex.Pattern;
    1819import java.util.stream.Collectors;
     
    8485                .collect(Collectors.toList());
    8586    }
    8687
     88    static boolean touchCustomEpsg(String baseDir) throws IOException {
     89        final Path path = Paths.get(baseDir).resolve(OUTPUT_EPSG_FILE);
     90        if (!Files.exists(path)) {
     91            Files.createDirectories(path.getParent());
     92            Files.createFile(path);
     93            Logger.getLogger(BuildProjectionDefinitions.class.getCanonicalName())
     94                    .info("Could not generate custom-epsg; an empty custom-epsg file was not available on the classpath. " +
     95                            "This should now be fixed, please rerun the command.");
     96            return true;
     97        }
     98        return false;
     99    }
     100
    87101    static void initMap(String baseDir, String file, Map<String, ProjectionDefinition> map) throws IOException {
    88102        final Path path = Paths.get(baseDir).resolve(PROJ_DIR).resolve(file);
    89103        final List<ProjectionDefinition> list;
     
    106120    }
    107121
    108122    static void buildList(String baseDir) throws IOException {
     123        if (touchCustomEpsg(baseDir)) {
     124            return;
     125        }
    109126        initMap(baseDir, JOSM_EPSG_FILE, epsgJosm);
    110127        initMap(baseDir, PROJ4_EPSG_FILE, epsgProj4);
    111128        initMap(baseDir, PROJ4_ESRI_FILE, esriProj4);
     
    242259                "EPSG:103471", // lcc/GRS80     - NAD_1983_HARN_WISCRS_Wood_County_Feet [NAD 1983 HARN Wisconsin CRS Wood (US feet)]
    243260                "EPSG:103474", // lcc/GRS80     - NAD_1983_CORS96_StatePlane_Nebraska_FIPS_2600 [NAD 1983 (CORS96) SPCS Nebraska]
    244261                "EPSG:103475"  // lcc/GRS80     - NAD_1983_CORS96_StatePlane_Nebraska_FIPS_2600_Ft_US [NAD 1983 (CORS96) SPCS Nebraska (US Feet)]
    245                 ).contains(pd.code)) {
     262        ).contains(pd.code)) {
    246263            result = false;
    247264        }
    248265        // CHECKSTYLE.ON: LineLength
  • new file core/pom.xml

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    diff --git a/core/pom.xml b/core/pom.xml
    new file mode 100644
    - +  
     1<?xml version="1.0"?>
     2<project xmlns="http://maven.apache.org/POM/4.0.0">
     3    <modelVersion>4.0.0</modelVersion>
     4    <groupId>org.openstreetmap.josm</groupId>
     5    <artifactId>josm-parent</artifactId>
     6    <version>1.0-SNAPSHOT</version>
     7    <packaging>pom</packaging>
     8    <properties>
     9        <project.build.sourceEncoding>US-ASCII</project.build.sourceEncoding>
     10        <project.reporting.outputEncoding>US-ASCII</project.reporting.outputEncoding>
     11        <java.lang.version>11</java.lang.version>
     12        <maven.compiler.release>${java.lang.version}</maven.compiler.release>
     13        <test.headless>true</test.headless>
     14    </properties>
     15    <modules>
     16        <module>pom-josm.xml</module>
     17        <!-- The test pom is mostly for plugins; JOSM core dev doesn't need it -->
     18        <module>test/pom.xml</module>
     19    </modules>
     20    <repositories>
     21        <repository>
     22            <id>JOSM-central</id>
     23            <url>https://josm.openstreetmap.de/nexus/content/repositories/central/</url>
     24        </repository>
     25        <repository>
     26            <id>JOSM-releases</id>
     27            <url>https://josm.openstreetmap.de/nexus/content/repositories/releases/</url>
     28        </repository>
     29        <repository>
     30            <id>JOSM-snapshots</id>
     31            <url>https://josm.openstreetmap.de/nexus/content/repositories/snapshots/</url>
     32        </repository>
     33        <repository>
     34            <id>JOSM-osgeo</id>
     35            <url>https://josm.openstreetmap.de/nexus/content/repositories/osgeo/</url>
     36        </repository>
     37    </repositories>
     38    <build>
     39        <pluginManagement>
     40            <plugins>
     41                <plugin>
     42                    <groupId>org.codehaus.mojo</groupId>
     43                    <artifactId>javacc-maven-plugin</artifactId>
     44                    <version>3.1.0</version>
     45                </plugin>
     46                <plugin>
     47                    <groupId>org.apache.maven.plugins</groupId>
     48                    <artifactId>maven-clean-plugin</artifactId>
     49                    <version>3.3.2</version>
     50                </plugin>
     51                <plugin>
     52                    <groupId>org.codehaus.mojo</groupId>
     53                    <artifactId>exec-maven-plugin</artifactId>
     54                    <version>3.2.0</version>
     55                </plugin>
     56                <plugin>
     57                    <groupId>org.apache.maven.plugins</groupId>
     58                    <artifactId>maven-resources-plugin</artifactId>
     59                    <version>3.3.1</version>
     60                </plugin>
     61                <plugin>
     62                    <groupId>org.apache.maven.plugins</groupId>
     63                    <artifactId>maven-pmd-plugin</artifactId>
     64                    <version>3.22.0</version>
     65                </plugin>
     66                <plugin>
     67                    <groupId>org.apache.maven.plugins</groupId>
     68                    <artifactId>maven-surefire-plugin</artifactId>
     69                    <version>3.2.5</version>
     70                </plugin>
     71                <plugin>
     72                    <groupId>com.github.spotbugs</groupId>
     73                    <artifactId>spotbugs-maven-plugin</artifactId>
     74                    <version>4.8.5.0</version>
     75                </plugin>
     76                <plugin>
     77                    <groupId>org.apache.maven.plugins</groupId>
     78                    <artifactId>maven-checkstyle-plugin</artifactId>
     79                    <version>3.3.1</version>
     80                </plugin>
     81                <plugin>
     82                    <groupId>org.apache.maven.plugins</groupId>
     83                    <artifactId>maven-shade-plugin</artifactId>
     84                    <version>3.5.3</version>
     85                </plugin>
     86                <plugin>
     87                    <groupId>org.apache.maven.plugins</groupId>
     88                    <artifactId>maven-jar-plugin</artifactId>
     89                    <version>3.4.1</version>
     90                </plugin>
     91                <!-- Used to set version information -->
     92                <plugin>
     93                    <groupId>org.codehaus.mojo</groupId>
     94                    <artifactId>buildnumber-maven-plugin</artifactId>
     95                    <version>3.2.0</version>
     96                </plugin>
     97            </plugins>
     98        </pluginManagement>
     99        <plugins>
     100            <plugin>
     101                <groupId>org.apache.maven.plugins</groupId>
     102                <artifactId>maven-enforcer-plugin</artifactId>
     103                <version>3.4.1</version>
     104                <executions>
     105                    <execution>
     106                        <id>enforce-versions</id>
     107                        <goals>
     108                            <goal>enforce</goal>
     109                        </goals>
     110                        <configuration>
     111                            <rules>
     112                                <requireMavenVersion>
     113                                    <version>3.6.3</version>
     114                                </requireMavenVersion>
     115                                <requireJavaVersion>
     116                                    <version>11</version>
     117                                </requireJavaVersion>
     118                            </rules>
     119                        </configuration>
     120                    </execution>
     121                </executions>
     122            </plugin>
     123        </plugins>
     124    </build>
     125    <dependencyManagement>
     126        <dependencies>
     127            <dependency>
     128                <groupId>org.junit</groupId>
     129                <artifactId>junit-bom</artifactId>
     130                <version>5.10.2</version>
     131                <type>pom</type>
     132                <scope>import</scope>
     133            </dependency>
     134            <dependency>
     135                <groupId>org.openstreetmap.jmapviewer</groupId>
     136                <artifactId>jmapviewer</artifactId>
     137                <version>2.19</version>
     138                <scope>provided</scope>
     139            </dependency>
     140            <dependency>
     141                <groupId>jakarta.json</groupId>
     142                <artifactId>jakarta.json-api</artifactId>
     143                <version>2.1.3</version>
     144                <scope>provided</scope>
     145            </dependency>
     146            <dependency>
     147                <groupId>org.eclipse.parsson</groupId>
     148                <artifactId>parsson</artifactId>
     149                <version>1.1.6</version>
     150                <scope>runtime</scope>
     151            </dependency>
     152            <dependency>
     153                <groupId>org.apache.commons</groupId>
     154                <artifactId>commons-jcs3-core</artifactId>
     155                <version>3.2</version>
     156                <scope>provided</scope>
     157            </dependency>
     158            <dependency>
     159                <groupId>org.apache.commons</groupId>
     160                <artifactId>commons-compress</artifactId>
     161                <version>1.26.1</version>
     162                <scope>provided</scope>
     163            </dependency>
     164            <dependency>
     165                <groupId>jakarta.annotation</groupId>
     166                <artifactId>jakarta.annotation-api</artifactId>
     167                <version>2.1.1</version>
     168                <scope>provided</scope>
     169            </dependency>
     170            <dependency>
     171                <groupId>org.tukaani</groupId>
     172                <artifactId>xz</artifactId>
     173                <version>1.9</version>
     174                <scope>provided</scope>
     175            </dependency>
     176            <dependency>
     177                <groupId>com.adobe.xmp</groupId>
     178                <artifactId>xmpcore</artifactId>
     179                <version>6.1.11</version>
     180                <scope>provided</scope>
     181            </dependency>
     182            <dependency>
     183                <groupId>com.drewnoakes</groupId>
     184                <artifactId>metadata-extractor</artifactId>
     185                <version>2.19.0</version>
     186                <scope>provided</scope>
     187            </dependency>
     188            <dependency>
     189                <groupId>com.formdev</groupId>
     190                <artifactId>svgSalamander</artifactId>
     191                <version>1.1.4</version>
     192                <scope>provided</scope>
     193            </dependency>
     194            <dependency>
     195                <groupId>ch.poole</groupId>
     196                <artifactId>OpeningHoursParser</artifactId>
     197                <version>0.28.2</version>
     198                <scope>provided</scope>
     199            </dependency>
     200            <!-- Don't forget to update org.openstreetmap.josm.tools.Tag2Link#PREF_SOURCE -->
     201            <dependency>
     202                <groupId>org.webjars.npm</groupId>
     203                <artifactId>tag2link</artifactId>
     204                <version>2024.2.8</version>
     205                <scope>provided</scope>
     206            </dependency>
     207            <dependency>
     208                <groupId>org.jacoco</groupId>
     209                <artifactId>org.jacoco.ant</artifactId>
     210                <version>0.8.12</version>
     211                <scope>test</scope>
     212            </dependency>
     213            <dependency>
     214                <groupId>org.jmockit</groupId>
     215                <artifactId>jmockit</artifactId>
     216                <version>1.49.a</version>
     217                <scope>test</scope>
     218            </dependency>
     219            <dependency>
     220                <groupId>com.github.spotbugs</groupId>
     221                <artifactId>spotbugs-annotations</artifactId>
     222                <version>4.8.5</version>
     223                <scope>test</scope>
     224            </dependency>
     225            <dependency>
     226                <groupId>com.ginsberg</groupId>
     227                <artifactId>junit5-system-exit</artifactId>
     228                <version>1.1.2</version>
     229                <scope>test</scope>
     230            </dependency>
     231            <dependency>
     232                <groupId>org.wiremock</groupId>
     233                <artifactId>wiremock</artifactId>
     234                <version>3.5.4</version>
     235                <scope>test</scope>
     236            </dependency>
     237            <dependency>
     238                <groupId>io.github.classgraph</groupId>
     239                <artifactId>classgraph</artifactId>
     240                <version>4.8.172</version>
     241                <scope>test</scope>
     242            </dependency>
     243            <dependency>
     244                <groupId>net.trajano.commons</groupId>
     245                <artifactId>commons-testing</artifactId>
     246                <version>2.1.0</version>
     247                <scope>test</scope>
     248            </dependency>
     249            <dependency>
     250                <groupId>nl.jqno.equalsverifier</groupId>
     251                <artifactId>equalsverifier</artifactId>
     252                <version>3.16.1</version>
     253                <scope>test</scope>
     254            </dependency>
     255            <dependency>
     256                <groupId>org.apache.commons</groupId>
     257                <artifactId>commons-lang3</artifactId>
     258                <version>3.14.0</version>
     259                <scope>test</scope>
     260            </dependency>
     261            <dependency>
     262                <groupId>org.awaitility</groupId>
     263                <artifactId>awaitility</artifactId>
     264                <version>4.2.1</version>
     265                <scope>test</scope>
     266            </dependency>
     267        </dependencies>
     268    </dependencyManagement>
     269</project>
     270 No newline at end of file
  • new file core/pom-josm.xml

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    diff --git a/core/pom-josm.xml b/core/pom-josm.xml
    new file mode 100644
    - +  
     1<?xml version="1.0"?>
     2<project xmlns="http://maven.apache.org/POM/4.0.0">
     3  <modelVersion>4.0.0</modelVersion>
     4  <artifactId>josm</artifactId>
     5  <version>1.0-SNAPSHOT</version>
     6
     7  <parent>
     8    <groupId>org.openstreetmap.josm</groupId>
     9    <artifactId>josm-parent</artifactId>
     10    <version>1.0-SNAPSHOT</version>
     11    <relativePath>./pom.xml</relativePath>
     12  </parent>
     13
     14  <name>JOSM</name>
     15  <url>https://josm.openstreetmap.de</url>
     16  <properties>
     17    <src.dir>${project.basedir}/src</src.dir>
     18    <test.dir>${project.basedir}/test</test.dir>
     19    <scripts.src.dir>${project.basedir}/scripts</scripts.src.dir>
     20    <build.dir>${project.basedir}/build</build.dir>
     21    <dist.dir>${project.basedir}/dist</dist.dir>
     22    <checkstyle-build.dir>${project.basedir}/build2</checkstyle-build.dir>
     23    <checkstyle.dir>${tools.dir}/checkstyle</checkstyle.dir>
     24    <mapcss.dir>${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss</mapcss.dir>
     25    <modules.dir>${dist.dir}/modules</modules.dir>
     26    <pmd.dir>${tools.dir}/pmd</pmd.dir>
     27    <proj-build.dir>${project.basedir}/build2</proj-build.dir>
     28    <resources.dir>${project.basedir}/resources</resources.dir>
     29    <script-build.dir>${project.basedir}/build2</script-build.dir>
     30    <spotbugs.dir>${tools.dir}/spotbugs</spotbugs.dir>
     31    <tools.dir>${project.basedir}/tools</tools.dir>
     32    <epsg.output>${resources.dir}/data/projection/custom-epsg</epsg.output>
     33    <javacc.home>${tools.dir}</javacc.home>
     34    <dist.jar>${dist.dir}/josm-custom.jar</dist.jar>
     35    <dist-optimized.jar>${dist.dir}/josm-custom-optimized.jar</dist-optimized.jar>
     36    <dist-sources.jar>${dist.dir}/josm-custom-sources.jar</dist-sources.jar>
     37    <jacoco.includes>org.openstreetmap.josm.*</jacoco.includes>
     38    <jacoco.inclbootstrapclasses>false</jacoco.inclbootstrapclasses>
     39    <jacoco.inclnolocationclasses>false</jacoco.inclnolocationclasses>
     40    <junit.printsummary>on</junit.printsummary>
     41    <default-junit-includes>**/*Test.class</default-junit-includes>
     42    <default-junitIT-includes>**/*TestIT.class</default-junitIT-includes>
     43    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     44  </properties>
     45  <packaging>jar</packaging>
     46  <inceptionYear>2005</inceptionYear>
     47  <licenses>
     48    <license>
     49      <name>GPL-2.0-or-later</name>
     50      <url>https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html</url>
     51      <distribution>repo</distribution>
     52    </license>
     53  </licenses>
     54  <organization>
     55    <name>JOSM</name>
     56    <url>https://josm.openstreetmap.de</url>
     57  </organization>
     58  <scm>
     59    <connection>scm:svn:https://josm.openstreetmap.de/svn/trunk</connection>
     60    <url>https://josm.openstreetmap.de/browser/josm/trunk</url>
     61  </scm>
     62  <issueManagement>
     63    <system>Trac</system>
     64    <url>https://josm.openstreetmap.de</url>
     65  </issueManagement>
     66  <mailingLists>
     67    <mailingList>
     68      <name>josm-dev</name>
     69      <archive>https://lists.openstreetmap.org/pipermail/josm-dev/</archive>
     70      <post>josm-dev@openstreetmap.org</post>
     71    </mailingList>
     72  </mailingLists>
     73
     74  <dependencies>
     75    <!-- Deprecated dependencies (to remove sometime in 2024)-->
     76    <dependency>
     77      <groupId>javax.json</groupId>
     78      <artifactId>javax.json-api</artifactId>
     79      <version>1.1.4</version>
     80      <scope>compile</scope>
     81    </dependency>
     82    <dependency>
     83      <groupId>org.glassfish</groupId>
     84      <artifactId>javax.json</artifactId>
     85      <version>1.1.4</version>
     86      <scope>compile</scope>
     87    </dependency>
     88    <dependency>
     89      <groupId>com.google.code.findbugs</groupId>
     90      <artifactId>jsr305</artifactId>
     91      <version>3.0.2</version>
     92      <scope>compile</scope>
     93    </dependency>
     94    <!-- end Deprecated dependencies -->
     95    <dependency>
     96      <groupId>org.openstreetmap.jmapviewer</groupId>
     97      <artifactId>jmapviewer</artifactId>
     98      <scope>compile</scope>
     99    </dependency>
     100    <dependency>
     101      <groupId>jakarta.json</groupId>
     102      <artifactId>jakarta.json-api</artifactId>
     103      <scope>compile</scope>
     104    </dependency>
     105    <dependency>
     106      <groupId>org.eclipse.parsson</groupId>
     107      <artifactId>parsson</artifactId>
     108    </dependency>
     109    <dependency>
     110      <groupId>org.apache.commons</groupId>
     111      <artifactId>commons-jcs3-core</artifactId>
     112      <scope>compile</scope>
     113    </dependency>
     114    <dependency>
     115      <groupId>org.apache.commons</groupId>
     116      <artifactId>commons-compress</artifactId>
     117      <scope>compile</scope>
     118    </dependency>
     119    <dependency>
     120      <groupId>jakarta.annotation</groupId>
     121      <artifactId>jakarta.annotation-api</artifactId>
     122      <scope>compile</scope>
     123    </dependency>
     124    <dependency>
     125      <groupId>org.tukaani</groupId>
     126      <artifactId>xz</artifactId>
     127      <scope>compile</scope>
     128    </dependency>
     129    <dependency>
     130      <groupId>com.adobe.xmp</groupId>
     131      <artifactId>xmpcore</artifactId>
     132      <scope>compile</scope>
     133    </dependency>
     134    <dependency>
     135      <groupId>com.drewnoakes</groupId>
     136      <artifactId>metadata-extractor</artifactId>
     137      <scope>compile</scope>
     138    </dependency>
     139    <dependency>
     140      <groupId>com.formdev</groupId>
     141      <artifactId>svgSalamander</artifactId>
     142      <scope>compile</scope>
     143    </dependency>
     144    <dependency>
     145      <groupId>ch.poole</groupId>
     146      <artifactId>OpeningHoursParser</artifactId>
     147      <scope>compile</scope>
     148    </dependency>
     149    <!-- Don't forget to update org.openstreetmap.josm.tools.Tag2Link#PREF_SOURCE -->
     150    <dependency>
     151      <groupId>org.webjars.npm</groupId>
     152      <artifactId>tag2link</artifactId>
     153      <scope>compile</scope>
     154    </dependency>
     155    <dependency>
     156      <groupId>org.jacoco</groupId>
     157      <artifactId>org.jacoco.ant</artifactId>
     158    </dependency>
     159    <dependency>
     160      <groupId>org.jmockit</groupId>
     161      <artifactId>jmockit</artifactId>
     162    </dependency>
     163    <dependency>
     164      <groupId>com.github.spotbugs</groupId>
     165      <artifactId>spotbugs-annotations</artifactId>
     166    </dependency>
     167    <dependency>
     168      <groupId>com.ginsberg</groupId>
     169      <artifactId>junit5-system-exit</artifactId>
     170    </dependency>
     171    <dependency>
     172      <groupId>org.wiremock</groupId>
     173      <artifactId>wiremock</artifactId>
     174    </dependency>
     175    <dependency>
     176      <groupId>io.github.classgraph</groupId>
     177      <artifactId>classgraph</artifactId>
     178    </dependency>
     179    <dependency>
     180      <groupId>org.junit.platform</groupId>
     181      <artifactId>junit-platform-launcher</artifactId>
     182      <scope>test</scope>
     183    </dependency>
     184    <dependency>
     185      <groupId>org.junit.platform</groupId>
     186      <artifactId>junit-platform-suite</artifactId>
     187      <scope>test</scope>
     188    </dependency>
     189    <dependency>
     190      <groupId>org.junit.vintage</groupId>
     191      <artifactId>junit-vintage-engine</artifactId>
     192      <scope>test</scope>
     193    </dependency>
     194    <dependency>
     195      <groupId>org.junit.jupiter</groupId>
     196      <artifactId>junit-jupiter-params</artifactId>
     197      <scope>test</scope>
     198    </dependency>
     199    <dependency>
     200      <groupId>org.junit.jupiter</groupId>
     201      <artifactId>junit-jupiter-api</artifactId>
     202      <scope>test</scope>
     203    </dependency>
     204    <dependency>
     205      <groupId>org.junit.jupiter</groupId>
     206      <artifactId>junit-jupiter-engine</artifactId>
     207      <scope>test</scope>
     208    </dependency>
     209    <dependency>
     210      <groupId>org.junit.jupiter</groupId>
     211      <artifactId>junit-jupiter-migrationsupport</artifactId>
     212      <scope>test</scope>
     213    </dependency>
     214    <dependency>
     215      <groupId>net.trajano.commons</groupId>
     216      <artifactId>commons-testing</artifactId>
     217    </dependency>
     218    <dependency>
     219      <groupId>nl.jqno.equalsverifier</groupId>
     220      <artifactId>equalsverifier</artifactId>
     221    </dependency>
     222    <dependency>
     223      <groupId>org.apache.commons</groupId>
     224      <artifactId>commons-lang3</artifactId>
     225    </dependency>
     226    <dependency>
     227      <groupId>org.awaitility</groupId>
     228      <artifactId>awaitility</artifactId>
     229    </dependency>
     230  </dependencies>
     231  <build>
     232    <sourceDirectory>${src.dir}</sourceDirectory>
     233    <testSourceDirectory>${test.dir}/unit</testSourceDirectory>
     234    <scriptSourceDirectory>${scripts.src.dir}</scriptSourceDirectory>
     235    <resources>
     236      <resource>
     237        <directory>${resources.dir}</directory>
     238      </resource>
     239      <resource>
     240        <directory>${project.basedir}</directory>
     241        <includes>
     242          <include>CONTRIBUTION</include>
     243          <include>gpl-2.0.txt</include>
     244          <include>gpl-3.0.txt</include>
     245          <include>LICENSE</include>
     246          <include>README</include>
     247          <include>REVISION</include>
     248        </includes>
     249      </resource>
     250    </resources>
     251    <testResources>
     252      <testResource>
     253        <directory>${test.dir}/data</directory>
     254      </testResource>
     255    </testResources>
     256    <plugins>
     257      <!-- Generate sources -->
     258      <plugin>
     259        <groupId>org.codehaus.mojo</groupId>
     260        <artifactId>javacc-maven-plugin</artifactId>
     261        <executions>
     262          <execution>
     263            <id>javacc</id>
     264            <goals>
     265              <goal>javacc</goal>
     266            </goals>
     267            <configuration>
     268              <debugParser>false</debugParser>
     269              <debugTokenManager>false</debugTokenManager>
     270              <jdkVersion>${java.lang.version}</jdkVersion>
     271              <grammarEncoding>UTF-8</grammarEncoding>
     272              <unicodeInput>true</unicodeInput>
     273              <sourceDirectory>${src.dir}</sourceDirectory>
     274              <outputDirectory>${src.dir}</outputDirectory>
     275              <includes><include>**/MapCSSParser.jj</include></includes>
     276              <excludes><exclude>**/*.java</exclude></excludes>
     277            </configuration>
     278          </execution>
     279        </executions>
     280      </plugin>
     281      <!-- Update proj, epsg, etc. -->
     282      <plugin>
     283        <groupId>org.codehaus.mojo</groupId>
     284        <artifactId>exec-maven-plugin</artifactId>
     285        <executions>
     286          <!-- mvn test-compile && mvn exec:java@update-proj-reference-files -->
     287          <execution>
     288            <id>update-proj-reference-files</id>
     289            <configuration>
     290              <classpathScope>test</classpathScope>
     291              <mainClass>org.openstreetmap.josm.data.projection.ProjectionRefTest</mainClass>
     292            </configuration>
     293            <goals>
     294              <goal>java</goal>
     295            </goals>
     296          </execution>
     297          <!-- mvn test-compile && mvn exec:java@update-proj-regression-files -->
     298          <execution>
     299            <id>update-proj-regression-files</id>
     300            <configuration>
     301              <classpathScope>test</classpathScope>
     302              <mainClass>org.openstreetmap.josm.data.projection.ProjectionRegressionTest</mainClass>
     303            </configuration>
     304            <goals>
     305              <goal>java</goal>
     306            </goals>
     307          </execution>
     308          <!-- mvn compile && mvn exec:java@SyncEditorLayerIndex -->
     309          <execution>
     310            <id>SyncEditorLayerIndex</id>
     311            <configuration>
     312              <executable>java</executable>
     313              <arguments>
     314                <argument>-Djava.awt.headless=true</argument>
     315                <argument>-classpath</argument>
     316                <classpath/> <!-- Generates the actual classpath using all project dependencies -->
     317                <argument>${scripts.src.dir}/SyncEditorLayerIndex.java</argument>
     318                <argument>${basedir}</argument>
     319              </arguments>
     320              <!-- We need commons-lang3, which isn't needed elsewhere in core (besides a test or two) -->
     321              <classpathScope>test</classpathScope>
     322            </configuration>
     323            <goals>
     324              <goal>exec</goal>
     325            </goals>
     326          </execution>
     327          <!-- Note that the epsg-touch/epsg executions are NOT duplicates - the first epsg makes an empty file for the
     328               next run, which makes a non-empty custom-epsg file -->
     329          <execution>
     330            <id>epsg-touch</id>
     331            <configuration>
     332              <executable>java</executable>
     333              <arguments>
     334                <argument>-Djava.awt.headless=true</argument>
     335                <argument>-classpath</argument>
     336                <classpath/> <!-- Generates the actual classpath using all project dependencies -->
     337                <argument>${basedir}/scripts/BuildProjectionDefinitions.java</argument>
     338                <argument>${basedir}</argument>
     339              </arguments>
     340            </configuration>
     341            <phase>process-classes</phase>
     342            <goals>
     343              <goal>exec</goal>
     344            </goals>
     345          </execution>
     346          <execution>
     347            <id>epsg</id>
     348            <configuration>
     349              <executable>java</executable>
     350              <arguments>
     351                <argument>-Djava.awt.headless=true</argument>
     352                <argument>-classpath</argument>
     353                <classpath/> <!-- Generates the actual classpath using all project dependencies -->
     354                <argument>${basedir}/scripts/BuildProjectionDefinitions.java</argument>
     355                <argument>${basedir}</argument>
     356              </arguments>
     357            </configuration>
     358            <phase>generate-test-resources</phase>
     359            <goals>
     360              <goal>exec</goal>
     361            </goals>
     362          </execution>
     363        </executions>
     364      </plugin>
     365      <plugin>
     366        <!-- This *must* be after the exec-maven-plugin since the epsg execution must occur first -->
     367        <artifactId>maven-resources-plugin</artifactId>
     368        <executions>
     369          <!-- Note that the copy-resources-{epsg-touch,epsg} executions are NOT duplicates - the first epsg makes an
     370               empty file for the next run, which makes a non-empty custom-epsg file -->
     371          <execution>
     372            <id>copy-resources-epsg-touch</id>
     373            <phase>process-classes</phase>
     374            <goals>
     375              <goal>copy-resources</goal>
     376            </goals>
     377            <configuration>
     378              <outputDirectory>${project.build.outputDirectory}/data/projection</outputDirectory>
     379              <resources>
     380                <resource>
     381                  <directory>${resources.dir}/data/projection/</directory>
     382                  <includes>
     383                    <include>custom-epsg</include>
     384                  </includes>
     385                </resource>
     386              </resources>
     387            </configuration>
     388          </execution>
     389          <execution>
     390            <id>copy-resources-epsg</id>
     391            <phase>generate-test-resources</phase>
     392            <goals>
     393              <goal>copy-resources</goal>
     394            </goals>
     395            <configuration>
     396              <outputDirectory>${project.build.outputDirectory}/data/projection</outputDirectory>
     397              <resources>
     398                <resource>
     399                  <directory>${resources.dir}/data/projection/</directory>
     400                  <includes>
     401                    <include>custom-epsg</include>
     402                  </includes>
     403                </resource>
     404              </resources>
     405            </configuration>
     406          </execution>
     407        </executions>
     408      </plugin>
     409      <!-- Configure checkstyle/pmd/other lint plugins -->
     410      <plugin>
     411        <groupId>org.apache.maven.plugins</groupId>
     412        <artifactId>maven-pmd-plugin</artifactId>
     413        <configuration>
     414          <analysisCache>true</analysisCache>
     415          <analysisCacheLocation>${pmd.dir}/cache</analysisCacheLocation>
     416          <language>java</language>
     417          <targetJdk>${java.lang.version}</targetJdk>
     418          <rulesets>
     419            <ruleset>${pmd.dir}/josm-ruleset.xml</ruleset>
     420          </rulesets>
     421          <includes>
     422            <include>**/*.java</include>
     423          </includes>
     424          <excludes>
     425            <exclude>org/openstreetmap/josm/gui/mappaint/mapcss/parsergen/*.java</exclude>
     426          </excludes>
     427          <printFailingErrors>true</printFailingErrors>
     428          <targetDirectory>${project.basedir}</targetDirectory>
     429        </configuration>
     430      </plugin>
     431      <plugin>
     432        <groupId>com.github.spotbugs</groupId>
     433        <artifactId>spotbugs-maven-plugin</artifactId>
     434        <configuration>
     435          <xmlOutput>true</xmlOutput>
     436          <spotbugsXmlOutputFilename>spotbugs-josm.xml</spotbugsXmlOutputFilename>
     437          <effort>max</effort>
     438          <excludeFilterFile>${spotbugs.dir}/josm-filter.xml</excludeFilterFile>
     439          <onlyAnalyze>org.openstreetmap.josm.-</onlyAnalyze>
     440          <threshold>LOW</threshold>
     441        </configuration>
     442        <!-- This is commented out until all the current bugs are fixed. TODO uncomment!
     443        <executions>
     444          <execution>
     445            <id>validate</id>
     446            <phase>validate</phase>
     447            <goals>
     448              <goal>check</goal>
     449            </goals>
     450          </execution>
     451        </executions>
     452        -->
     453      </plugin>
     454      <plugin>
     455        <groupId>org.apache.maven.plugins</groupId>
     456        <artifactId>maven-checkstyle-plugin</artifactId>
     457        <configuration>
     458          <configLocation>${checkstyle.dir}/josm_checks.xml</configLocation>
     459          <includeTestSourceDirectory>true</includeTestSourceDirectory>
     460          <outputFile>${project.basedir}/checkstyle-josm.xml</outputFile>
     461          <!-- checkstyle cannot parse module-info.java yet -->
     462          <excludes>module-info.java,org/openstreetmap/josm/gui/mappaint/mapcss/parsergen/*.java</excludes>
     463        </configuration>
     464        <executions>
     465          <execution>
     466            <id>validate</id>
     467            <phase>validate</phase>
     468            <goals>
     469              <goal>check</goal>
     470            </goals>
     471          </execution>
     472        </executions>
     473      </plugin>
     474      <!-- Configure the test plugin, specifically enable autodetection of global extensions -->
     475      <plugin>
     476        <artifactId>maven-surefire-plugin</artifactId>
     477        <configuration>
     478          <excludes>
     479            <exclude>**/*TestIT</exclude>
     480          </excludes>
     481          <skipAfterFailureCount>1</skipAfterFailureCount>
     482          <argLine>-javaagent:${test.dir}/lib/jmockit.jar</argLine>
     483          <properties>
     484            <configurationParameters>
     485              file.encoding = UTF-8
     486              java.locale.providers = SPI,CLDR
     487              junit.jupiter.extensions.autodetection.enabled = true
     488              junit.jupiter.execution.parallel.enabled = true
     489            </configurationParameters>
     490          </properties>
     491          <systemPropertyVariables>
     492            <josm.home>${test.dir}/config/josm.home</josm.home>
     493            <josm.test.data>${test.dir}/data</josm.test.data>
     494            <java.awt.headless>${test.headless}</java.awt.headless>
     495            <glass.platform>Monocle</glass.platform>
     496            <monocle.platform>Headless</monocle.platform>
     497            <prism.order>sw</prism.order>
     498          </systemPropertyVariables>
     499        </configuration>
     500        <executions>
     501          <execution>
     502            <id>default-tests</id>
     503            <phase>test</phase>
     504            <goals>
     505              <goal>test</goal>
     506            </goals>
     507          </execution>
     508          <execution>
     509            <id>integration-tests</id>
     510            <phase>integration-test</phase>
     511            <goals>
     512              <goal>test</goal>
     513            </goals>
     514            <configuration>
     515              <includes>**/*TestIT</includes>
     516            </configuration>
     517          </execution>
     518          <execution>
     519            <id>functional-tests</id>
     520            <phase>integration-test</phase>
     521            <goals>
     522              <goal>test</goal>
     523            </goals>
     524            <configuration>
     525              <testSourceDirectory>${test.dir}/functional</testSourceDirectory>
     526            </configuration>
     527          </execution>
     528          <execution>
     529            <id>performance-tests</id>
     530            <phase>integration-test</phase>
     531            <goals>
     532              <goal>test</goal>
     533            </goals>
     534            <configuration>
     535              <testSourceDirectory>${test.dir}/performance</testSourceDirectory>
     536            </configuration>
     537          </execution>
     538        </executions>
     539      </plugin>
     540      <!-- the clean plugin is needed since we currently store generated sources in the source directory -->
     541      <plugin>
     542        <groupId>org.apache.maven.plugins</groupId>
     543        <artifactId>maven-clean-plugin</artifactId>
     544        <configuration>
     545          <filesets>
     546            <fileset>
     547              <directory>${proj-build.dir}</directory>
     548            </fileset>
     549            <fileset>
     550              <directory>${build.dir}</directory>
     551            </fileset>
     552            <fileset>
     553              <directory>${script-build.dir}</directory>
     554            </fileset>
     555            <fileset>
     556              <directory>${checkstyle-build.dir}</directory>
     557            </fileset>
     558            <fileset>
     559              <directory>${dist.dir}</directory>
     560            </fileset>
     561            <fileset>
     562              <directory>${mapcss.dir}/parsergen</directory>
     563            </fileset>
     564            <fileset>
     565              <directory>${src.dir}/org/w3/_2001/xmlschema</directory>
     566              <includes>
     567                <include>Adapter1.java</include>
     568              </includes>
     569            </fileset>
     570            <fileset>
     571              <directory>${src.dir}/org/openstreetmap/josm/data/imagery/types</directory>
     572            </fileset>
     573            <!-- ${epsg.output} -->
     574            <fileset>
     575              <directory>${resources.dir}/data/projection/</directory>
     576              <includes>
     577                <include>custom-epsg</include>
     578              </includes>
     579            </fileset>
     580            <fileset>
     581              <directory>${pmd.dir}</directory>
     582              <includes>
     583                <include>cache</include>
     584              </includes>
     585            </fileset>
     586          </filesets>
     587        </configuration>
     588      </plugin>
     589      <plugin>
     590        <groupId>org.codehaus.mojo</groupId>
     591        <artifactId>buildnumber-maven-plugin</artifactId>
     592        <executions>
     593          <execution>
     594            <phase>validate</phase>
     595            <goals>
     596              <goal>create</goal>
     597            </goals>
     598          </execution>
     599        </executions>
     600        <configuration>
     601          <doCheck>false</doCheck>
     602        </configuration>
     603      </plugin>
     604      <plugin>
     605        <groupId>org.apache.maven.plugins</groupId>
     606        <artifactId>maven-shade-plugin</artifactId>
     607        <executions>
     608          <execution>
     609            <phase>package</phase>
     610            <goals>
     611              <goal>shade</goal>
     612            </goals>
     613            <configuration>
     614              <!-- TODO: Do we want to minimize the jar? <minimizeJar>true</minimizeJar> -->
     615              <filters>
     616                <filter>
     617                  <artifact>*:*</artifact>
     618                  <excludes>
     619                    <!--<exclude>META-INF/*</exclude>
     620                    <exclude>META-INF/versions/**</exclude>
     621                    <exclude>*</exclude>-->
     622                    <exclude>META-INF/maven/**</exclude>
     623                  </excludes>
     624                </filter>
     625                <filter>
     626                  <artifact>org.webjars.npm:tag2link</artifact>
     627                  <excludes>
     628                    <exclude>META-INF/resources/webjars/tag2link/*/LICENSE</exclude>
     629                    <exclude>META-INF/resources/webjars/tag2link/*/README.md</exclude>
     630                    <exclude>META-INF/resources/webjars/tag2link/*/build.js</exclude>
     631                    <exclude>META-INF/resources/webjars/tag2link/*/package.json</exclude>
     632                    <exclude>META-INF/resources/webjars/tag2link/*/schema.json</exclude>
     633                    <exclude>META-INF/resources/webjars/tag2link/*/tag2link.sophox.sparql</exclude>
     634                    <exclude>META-INF/resources/webjars/tag2link/*/tag2link.wikidata.sparql</exclude>
     635                  </excludes>
     636                </filter>
     637                <filter>
     638                  <artifact>org.openstreetmap.jmapviewer:jmapviewer</artifact>
     639                  <excludes>
     640                    <exclude>org/openstreetmap/gui/jmapviewer/Demo*</exclude>
     641                  </excludes>
     642                </filter>
     643                <filter>
     644                  <artifact>com.drewnoakes:metadata-extractor</artifact>
     645                  <excludes>
     646                    <exclude>com/drew/imaging/FileTypeDetector*</exclude>
     647                    <exclude>com/drew/imaging/ImageMetadataReader*</exclude>
     648                    <exclude>com/drew/imaging/avi/**</exclude>
     649                    <exclude>com/drew/imaging/bmp/**</exclude>
     650                    <exclude>com/drew/imaging/eps/**</exclude>
     651                    <exclude>com/drew/imaging/gif/**</exclude>
     652                    <exclude>com/drew/imaging/heif/**</exclude>
     653                    <exclude>com/drew/imaging/ico/**</exclude>
     654                    <exclude>com/drew/imaging/mp3/**</exclude>
     655                    <exclude>com/drew/imaging/mp4/**</exclude>
     656                    <exclude>com/drew/imaging/pcx/**</exclude>
     657                    <exclude>com/drew/imaging/psd/**</exclude>
     658                    <exclude>com/drew/imaging/quicktime/**</exclude>
     659                    <exclude>com/drew/imaging/raf/**</exclude>
     660                    <exclude>com/drew/imaging/riff/**</exclude>
     661                    <exclude>com/drew/imaging/wav/**</exclude>
     662                    <exclude>com/drew/imaging/webp/**</exclude>
     663                    <exclude>com/drew/metadata/avi/**</exclude>
     664                    <exclude>com/drew/metadata/bmp/**</exclude>
     665                    <exclude>com/drew/metadata/eps/**</exclude>
     666                    <exclude>com/drew/metadata/gif/**</exclude>
     667                    <exclude>com/drew/metadata/heif/**</exclude>
     668                    <exclude>com/drew/metadata/ico/**</exclude>
     669                    <exclude>com/drew/metadata/mov/**</exclude>
     670                    <exclude>com/drew/metadata/mp3/**</exclude>
     671                    <exclude>com/drew/metadata/mp4/**</exclude>
     672                    <exclude>com/drew/metadata/pcx/**</exclude>
     673                    <exclude>com/drew/metadata/wav/**</exclude>
     674                    <exclude>com/drew/metadata/webp/**</exclude>
     675                    <exclude>com/drew/tools/**</exclude>
     676                  </excludes>
     677                </filter>
     678                <filter>
     679                  <artifact>com.formdev:svgSalamander</artifact>
     680                  <excludes>
     681                    <exclude>com/kitfox/svg/app/ant/**</exclude>
     682                    <exclude>com/kitfox/svg/app/*Dialog*</exclude>
     683                    <exclude>com/kitfox/svg/app/*Frame*</exclude>
     684                    <exclude>com/kitfox/svg/app/*Player*</exclude>
     685                    <exclude>com/kitfox/svg/app/*Viewer*</exclude>
     686                  </excludes>
     687                </filter>
     688                <filter>
     689                  <artifact>org.apache.commons:commons-compress</artifact>
     690                  <excludes>
     691                    <exclude>org/apache/commons/compress/PasswordRequiredException*</exclude>
     692                    <exclude>org/apache/commons/compress/archivers/**</exclude>
     693                    <exclude>org/apache/commons/compress/changes/**</exclude>
     694                    <exclude>org/apache/commons/compress/compressors/bzip2/BZip2Utils*</exclude>
     695                    <exclude>org/apache/commons/compress/compressors/brotli/**</exclude>
     696                    <exclude>org/apache/commons/compress/compressors/CompressorStreamFactory*</exclude>
     697                    <exclude>org/apache/commons/compress/compressors/CompressorStreamProvider*</exclude>
     698                    <exclude>org/apache/commons/compress/compressors/CompressorException*</exclude>
     699                    <exclude>org/apache/commons/compress/compressors/FileNameUtil*</exclude>
     700                    <exclude>org/apache/commons/compress/compressors/deflate/**</exclude>
     701                    <exclude>org/apache/commons/compress/compressors/gzip/**</exclude>
     702                    <exclude>org/apache/commons/compress/compressors/lz4/**</exclude>
     703                    <exclude>org/apache/commons/compress/compressors/lzma/**</exclude>
     704                    <exclude>org/apache/commons/compress/compressors/lz77support/**</exclude>
     705                    <exclude>org/apache/commons/compress/compressors/pack200/**</exclude>
     706                    <exclude>org/apache/commons/compress/compressors/snappy/**</exclude>
     707                    <exclude>org/apache/commons/compress/compressors/xz/XZUtils*</exclude>
     708                    <exclude>org/apache/commons/compress/compressors/z/**</exclude>
     709                    <exclude>org/apache/commons/compress/compressors/zstandard/**</exclude>
     710                    <exclude>org/apache/commons/compress/java/util/jar/Pack200*</exclude>
     711                    <exclude>org/apache/commons/compress/harmony/pack200/**</exclude>
     712                    <exclude>org/apache/commons/compress/harmony/unpack200/**</exclude>
     713                    <exclude>org/apache/commons/compress/parallel/**</exclude>
     714                    <exclude>org/apache/commons/compress/utils/ArchiveUtils*</exclude>
     715                  </excludes>
     716                </filter>
     717                <filter>
     718                  <artifact>org.apache.commons:commons-jcs3-core</artifact>
     719                  <excludes>
     720                    <exclude>org/apache/commons/jcs3/auxiliary/disk/jdbc/**</exclude>
     721                    <exclude>org/apache/commons/jcs3/auxiliary/remote/http/client/**</exclude>
     722                    <exclude>org/apache/commons/jcs3/auxiliary/remote/http/server/RemoteHttpCacheServlet*</exclude>
     723                    <exclude>org/apache/commons/jcs3/auxiliary/remote/server/RemoteCacheStartupServlet*</exclude>
     724                    <exclude>org/apache/commons/jcs3/log/Log4j2Factory*</exclude>
     725                    <exclude>org/apache/commons/jcs3/log/Log4j2LogAdapter*</exclude>
     726                    <exclude>org/apache/commons/jcs3/utils/servlet/**</exclude>
     727                  </excludes>
     728                </filter>
     729              </filters>
     730            </configuration>
     731          </execution>
     732        </executions>
     733      </plugin>
     734      <plugin>
     735        <groupId>org.apache.maven.plugins</groupId>
     736        <artifactId>maven-jar-plugin</artifactId>
     737        <configuration>
     738          <archive>
     739            <manifest>
     740              <mainClass>org.openstreetmap.josm.gui.MainApplication</mainClass>
     741              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
     742              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
     743            </manifest>
     744            <manifestEntries>
     745              <Main-Version>${buildNumber} SVN</Main-Version>
     746              <!-- The default timestamp format is milliseconds since epoch -->
     747              <Main-Date>${timestamp}</Main-Date>
     748              <Permissions>all-permissions</Permissions>
     749              <Codebase>josm.openstreetmap.de</Codebase>
     750              <Application-Name>JOSM - Java OpenStreetMap Editor</Application-Name>
     751              <Add-Exports>java.base/sun.security.action java.desktop/com.apple.eawt java.desktop/com.sun.imageio.spi java.desktop/com.sun.imageio.plugins.jpeg javafx.graphics/com.sun.javafx.application jdk.deploy/com.sun.deploy.config</Add-Exports>
     752              <Add-Opens>java.base/java.lang java.base/java.nio java.base/jdk.internal.loader java.base/jdk.internal.ref java.desktop/javax.imageio.spi java.desktop/javax.swing.text.html java.prefs/java.util.prefs</Add-Opens>
     753              <Multi-Release>true</Multi-Release>
     754              <Is-Local-Build>true</Is-Local-Build>
     755              <foobar>${somthing.not.here}</foobar>
     756            </manifestEntries>
     757          </archive>
     758        </configuration>
     759      </plugin>
     760    </plugins>
     761  </build>
     762</project>
  • new file core/test/pom.xml

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    diff --git a/core/test/pom.xml b/core/test/pom.xml
    new file mode 100644
    - +  
     1<?xml version="1.0"?>
     2<project xmlns="http://maven.apache.org/POM/4.0.0">
     3    <modelVersion>4.0.0</modelVersion>
     4    <artifactId>josm-unittest</artifactId>
     5    <version>1.0-SNAPSHOT</version>
     6
     7    <parent>
     8        <groupId>org.openstreetmap.josm</groupId>
     9        <artifactId>josm-parent</artifactId>
     10        <version>1.0-SNAPSHOT</version>
     11        <relativePath>../pom.xml</relativePath>
     12    </parent>
     13    <properties>
     14        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     15    </properties>
     16    <dependencies>
     17        <dependency>
     18            <groupId>org.openstreetmap.josm</groupId>
     19            <artifactId>josm</artifactId>
     20            <version>1.0-SNAPSHOT</version>
     21            <scope>provided</scope>
     22        </dependency>
     23        <dependency>
     24            <groupId>org.jmockit</groupId>
     25            <artifactId>jmockit</artifactId>
     26            <scope>compile</scope>
     27        </dependency>
     28        <dependency>
     29            <groupId>com.github.spotbugs</groupId>
     30            <artifactId>spotbugs-annotations</artifactId>
     31            <scope>compile</scope>
     32        </dependency>
     33        <dependency>
     34            <groupId>com.ginsberg</groupId>
     35            <artifactId>junit5-system-exit</artifactId>
     36            <scope>compile</scope>
     37        </dependency>
     38        <dependency>
     39            <groupId>org.wiremock</groupId>
     40            <artifactId>wiremock</artifactId>
     41            <scope>compile</scope>
     42        </dependency>
     43        <dependency>
     44            <groupId>io.github.classgraph</groupId>
     45            <artifactId>classgraph</artifactId>
     46            <scope>compile</scope>
     47        </dependency>
     48        <dependency>
     49            <groupId>org.junit.platform</groupId>
     50            <artifactId>junit-platform-launcher</artifactId>
     51            <scope>compile</scope>
     52        </dependency>
     53        <dependency>
     54            <groupId>org.junit.platform</groupId>
     55            <artifactId>junit-platform-suite</artifactId>
     56            <scope>compile</scope>
     57        </dependency>
     58        <dependency>
     59            <groupId>org.junit.vintage</groupId>
     60            <artifactId>junit-vintage-engine</artifactId>
     61            <scope>compile</scope>
     62        </dependency>
     63        <dependency>
     64            <groupId>org.junit.jupiter</groupId>
     65            <artifactId>junit-jupiter-params</artifactId>
     66            <scope>compile</scope>
     67        </dependency>
     68        <dependency>
     69            <groupId>org.junit.jupiter</groupId>
     70            <artifactId>junit-jupiter-api</artifactId>
     71            <scope>compile</scope>
     72        </dependency>
     73        <dependency>
     74            <groupId>org.junit.jupiter</groupId>
     75            <artifactId>junit-jupiter-engine</artifactId>
     76            <scope>compile</scope>
     77        </dependency>
     78        <dependency>
     79            <groupId>org.junit.jupiter</groupId>
     80            <artifactId>junit-jupiter-migrationsupport</artifactId>
     81            <scope>compile</scope>
     82        </dependency>
     83        <dependency>
     84            <groupId>net.trajano.commons</groupId>
     85            <artifactId>commons-testing</artifactId>
     86            <scope>compile</scope>
     87        </dependency>
     88        <dependency>
     89            <groupId>nl.jqno.equalsverifier</groupId>
     90            <artifactId>equalsverifier</artifactId>
     91            <scope>compile</scope>
     92        </dependency>
     93        <dependency>
     94            <groupId>org.apache.commons</groupId>
     95            <artifactId>commons-lang3</artifactId>
     96            <scope>compile</scope>
     97        </dependency>
     98        <dependency>
     99            <groupId>org.awaitility</groupId>
     100            <artifactId>awaitility</artifactId>
     101            <scope>compile</scope>
     102        </dependency>
     103    </dependencies>
     104
     105    <build>
     106        <sourceDirectory>${project.basedir}/unit</sourceDirectory>
     107        <resources>
     108            <resource>
     109                <directory>${project.basedir}/data</directory>
     110            </resource>
     111        </resources>
     112    </build>
     113</project>
     114 No newline at end of file
  • new file plugins/pom.xml

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    diff --git a/plugins/pom.xml b/plugins/pom.xml
    new file mode 100644
    - +  
     1<?xml version="1.0"?>
     2<project xmlns="http://maven.apache.org/POM/4.0.0">
     3  <modelVersion>4.0.0</modelVersion>
     4  <groupId>org.openstreetmap.josm.plugins</groupId>
     5  <artifactId>plugin-root</artifactId>
     6  <version>1.0-SNAPSHOT</version>
     7
     8  <parent>
     9    <groupId>org.openstreetmap.josm</groupId>
     10    <artifactId>josm-parent</artifactId>
     11    <version>1.0-SNAPSHOT</version>
     12    <relativePath>../core/pom.xml</relativePath>
     13  </parent>
     14
     15  <name>JOSM Plugins</name>
     16  <url>https://josm.openstreetmap.de</url>
     17  <properties>
     18    <josm>../../core/dist/josm-custom.jar</josm>
     19    <josm.test.build.dir>../../core/test/build</josm.test.build.dir>
     20    <plugin.tools.dir>../00_tools</plugin.tools.dir>
     21    <plugin.build.dir>build</plugin.build.dir>
     22    <plugin.test.dir>test</plugin.test.dir>
     23    <plugin.test.data.dir>${plugin.test.dir}/data</plugin.test.data.dir>
     24    <plugin.test.src.dir>${plugin.test.dir}/unit</plugin.test.src.dir>
     25    <plugin.src.dir>src</plugin.src.dir>
     26    <!-- most plugins default to resource directories in root, e.g. ./data, ./images, ./resources -->
     27    <plugin.resources.dir>${project.basedir}</plugin.resources.dir>
     28    <plugin.doc.dir>javadoc</plugin.doc.dir>
     29    <plugin.lib.dir>lib</plugin.lib.dir>
     30    <!-- this is the directory where the plugin jar is copied to -->
     31    <plugin.dist.dir>../../dist</plugin.dist.dir>
     32    <javadoc.executable>javadoc</javadoc.executable>
     33    <manifest>MANIFEST</manifest>
     34    <manifest.unixoid>MANIFEST-unixoid</manifest.unixoid>
     35    <manifest.windows>MANIFEST-windows</manifest.windows>
     36    <manifest.osx>MANIFEST-osx</manifest.osx>
     37    <plugin.compile.version>1.0-SNAPSHOT</plugin.compile.version>
     38    <plugin.jar>${project.name}.jar</plugin.jar>
     39    <plugin.unixoid.jar>${project.name}-unixoid.jar</plugin.unixoid.jar>
     40    <plugin.windows.jar>${project.name}-windows.jar</plugin.windows.jar>
     41    <plugin.osx.jar>${project.name}-osx.jar</plugin.osx.jar>
     42    <plugin.sources.jar>${project.name}-sources.jar</plugin.sources.jar>
     43    <plugin.javadoc.jar>${project.name}-javadoc.jar</plugin.javadoc.jar>
     44    <jacoco.inclbootstrapclasses>false</jacoco.inclbootstrapclasses>
     45    <jacoco.inclnolocationclasses>false</jacoco.inclnolocationclasses>
     46    <junit.printsummary>on</junit.printsummary>
     47  </properties>
     48  <packaging>pom</packaging>
     49  <inceptionYear>2005</inceptionYear>
     50  <licenses>
     51    <license>
     52      <name>GPL-2.0-or-later</name>
     53      <url>https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html</url>
     54      <distribution>repo</distribution>
     55    </license>
     56  </licenses>
     57  <organization>
     58    <name>JOSM</name>
     59    <url>https://josm.openstreetmap.de</url>
     60  </organization>
     61  <scm>
     62    <connection>scm:svn:https://josm.openstreetmap.de/svn/trunk</connection>
     63    <url>https://josm.openstreetmap.de/browser/josm/trunk</url>
     64  </scm>
     65  <issueManagement>
     66    <system>Trac</system>
     67    <url>https://josm.openstreetmap.de</url>
     68  </issueManagement>
     69  <mailingLists>
     70    <mailingList>
     71      <name>josm-dev</name>
     72      <archive>https://lists.openstreetmap.org/pipermail/josm-dev/</archive>
     73      <post>josm-dev@openstreetmap.org</post>
     74    </mailingList>
     75  </mailingLists>
     76  <modules>
     77    <module>../core</module>
     78    <module>apache-commons</module>
     79    <module>apache-http</module>
     80  </modules>
     81  <dependencies>
     82    <dependency>
     83      <groupId>org.openstreetmap.josm</groupId>
     84      <artifactId>josm</artifactId>
     85      <version>${plugin.compile.version}</version>
     86      <scope>provided</scope>
     87    </dependency>
     88  </dependencies>
     89  <dependencyManagement>
     90    <dependencies>
     91      <dependency>
     92        <groupId>org.openstreetmap.josm</groupId>
     93        <artifactId>josm-unittest</artifactId>
     94        <version>1.0-SNAPSHOT</version>
     95        <scope>test</scope>
     96      </dependency>
     97    </dependencies>
     98  </dependencyManagement>
     99  <build>
     100    <sourceDirectory>${plugin.src.dir}</sourceDirectory>
     101    <testSourceDirectory>${plugin.test.src.dir}</testSourceDirectory>
     102    <resources>
     103      <resource>
     104        <directory>${plugin.resources.dir}/data</directory>
     105        <targetPath>data</targetPath>
     106      </resource>
     107      <resource>
     108        <directory>${plugin.resources.dir}/images</directory>
     109        <targetPath>images</targetPath>
     110      </resource>
     111      <resource>
     112        <directory>${plugin.resources.dir}/resources</directory>
     113        <targetPath>resources</targetPath>
     114      </resource>
     115    </resources>
     116    <testResources>
     117      <testResource>
     118        <directory>${plugin.test.data.dir}</directory>
     119      </testResource>
     120    </testResources>
     121    <pluginManagement>
     122      <plugins>
     123        <!-- Configure checkstyle/pmd/other lint plugins -->
     124        <plugin>
     125          <groupId>com.github.spotbugs</groupId>
     126          <artifactId>spotbugs-maven-plugin</artifactId>
     127          <version>4.8.1.0</version>
     128          <configuration>
     129            <xmlOutput>true</xmlOutput>
     130            <spotbugsXmlOutputFilename>spotbugs-josm.xml</spotbugsXmlOutputFilename>
     131            <effort>max</effort>
     132            <excludeFilterFile>${spotbugs.dir}/josm-filter.xml</excludeFilterFile>
     133            <onlyAnalyze>org.openstreetmap.josm.-</onlyAnalyze>
     134            <threshold>LOW</threshold>
     135          </configuration>
     136          <!-- This is commented out until all the current bugs are fixed. TODO uncomment!
     137          <executions>
     138            <execution>
     139              <id>validate</id>
     140              <phase>validate</phase>
     141              <goals>
     142                <goal>check</goal>
     143              </goals>
     144            </execution>
     145          </executions>
     146          -->
     147        </plugin>
     148        <plugin>
     149          <groupId>org.apache.maven.plugins</groupId>
     150          <artifactId>maven-checkstyle-plugin</artifactId>
     151          <version>3.3.1</version>
     152          <configuration>
     153            <configLocation>${project.basedir}/../checkstyle-config.xml</configLocation>
     154            <includeTestSourceDirectory>true</includeTestSourceDirectory>
     155            <outputFile>${project.basedir}/checkstyle-josm-${project.name}.xml</outputFile>
     156            <!-- checkstyle cannot parse module-info.java yet -->
     157            <excludes>module-info.java</excludes>
     158          </configuration>
     159          <executions>
     160            <execution>
     161              <id>validate</id>
     162              <phase>validate</phase>
     163              <goals>
     164                <goal>check</goal>
     165              </goals>
     166            </execution>
     167          </executions>
     168        </plugin>
     169        <!-- Configure the test plugin, specifically enable autodetection of global extensions -->
     170        <plugin>
     171          <artifactId>maven-surefire-plugin</artifactId>
     172          <version>3.2.5</version>
     173          <configuration>
     174            <skipAfterFailureCount>1</skipAfterFailureCount>
     175            <argLine>-javaagent:"${settings.localRepository}"/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar</argLine>
     176            <properties>
     177              <configurationParameters>
     178                file.encoding = UTF-8
     179                java.locale.providers = SPI,CLDR
     180                junit.jupiter.extensions.autodetection.enabled = true
     181                junit.jupiter.execution.parallel.enabled = true
     182              </configurationParameters>
     183            </properties>
     184            <systemPropertyVariables>
     185              <josm.home>${plugin.test.dir}/config/josm.home</josm.home>
     186              <josm.test.data>${plugin.test.data.dir}</josm.test.data>
     187              <java.awt.headless>${test.headless}</java.awt.headless>
     188              <glass.platform>Monocle</glass.platform>
     189              <monocle.platform>Headless</monocle.platform>
     190              <prism.order>sw</prism.order>
     191            </systemPropertyVariables>
     192          </configuration>
     193        </plugin>
     194        <!-- the clean plugin is needed since we currently store generated sources in the source directory -->
     195        <plugin>
     196          <groupId>org.apache.maven.plugins</groupId>
     197          <artifactId>maven-clean-plugin</artifactId>
     198          <version>3.3.2</version>
     199          <configuration>
     200            <filesets>
     201              <fileset>
     202                <directory>${plugin.build.dir}</directory>
     203              </fileset>
     204              <fileset>
     205                <directory>${plugin.dist.dir}</directory>
     206                <includes>
     207                  <include>${plugin.jar}</include>
     208                  <include>${plugin.unixoid.jar}</include>
     209                  <include>${plugin.windows.jar}</include>
     210                  <include>${plugin.osx.jar}</include>
     211                  <include>${plugin.sources.jar}</include>
     212                  <include>${plugin.javadoc.jar}</include>
     213                </includes>
     214              </fileset>
     215              <fileset>
     216                <directory>${project.basedir}</directory>
     217                <includes>
     218                  <include>checkstyle-josm-${project.name}.xml</include>
     219                </includes>
     220              </fileset>
     221            </filesets>
     222          </configuration>
     223        </plugin>
     224        <plugin>
     225          <groupId>com.diffplug.spotless</groupId>
     226          <artifactId>spotless-maven-plugin</artifactId>
     227          <version>2.43.0</version>
     228          <configuration>
     229            <java>
     230              <eclipse>
     231                <version>4.21.0</version>
     232                <file>${project.basedir}/../00_core_tools/eclipse/formatter.xml</file>
     233              </eclipse>
     234              <removeUnusedImports/>
     235              <licenseHeader>
     236                <content>// License: GPL. For details, see LICENSE file.</content>
     237              </licenseHeader>
     238            </java>
     239          </configuration>
     240          <executions>
     241            <execution>
     242              <goals>
     243                <goal>check</goal>
     244              </goals>
     245            </execution>
     246          </executions>
     247        </plugin>
     248        <plugin>
     249          <groupId>org.apache.maven.plugins</groupId>
     250          <artifactId>maven-shade-plugin</artifactId>
     251          <version>3.5.3</version>
     252          <executions>
     253            <execution>
     254              <phase>package</phase>
     255              <goals>
     256                <goal>shade</goal>
     257              </goals>
     258            </execution>
     259          </executions>
     260        </plugin>
     261        <plugin>
     262          <groupId>org.apache.maven.plugins</groupId>
     263          <artifactId>maven-jar-plugin</artifactId>
     264          <configuration>
     265            <archive>
     266              <manifestEntries>
     267                <!-- For full documentation, see https://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins#ThemanifestfileforaJOSMplugin -->
     268                <Plugin-Mainversion>${plugin.main.version}</Plugin-Mainversion>
     269                <Plugin-Version>${project.version}</Plugin-Version>
     270                <Plugin-Class>${plugin.class}</Plugin-Class>
     271                <Plugin-Description>${plugin.description}</Plugin-Description>
     272                <Author>${plugin.author}</Author>
     273                <Plugin-Minimum-Java-Version>${plugin.minimum.java.version}</Plugin-Minimum-Java-Version>
     274                <!-- plugin.platform must be `Windows`, `Osx`, or `Unixoid` -->
     275                <Plugin-Platform>${plugin.platform}</Plugin-Platform>
     276                <Plugin-Provides>${plugin.provides}</Plugin-Provides>
     277                <Plugin-Date>${maven.build.timestamp}</Plugin-Date>
     278                <Plugin-Early>${plugin.early}</Plugin-Early>
     279                <Plugin-Link>${plugin.link}</Plugin-Link>
     280                <Plugin-Icon>${plugin.icon}</Plugin-Icon>
     281                <Plugin-Requires>${plugin.requires}</Plugin-Requires>
     282                <Plugin-Canloadatruntime>${plugin.canloadatruntime}</Plugin-Canloadatruntime>
     283                <Class-Path>${plugin.classpath}</Class-Path>
     284                <!-- Additional entries: <xxx>_Plugin-Url (doesn't work well with xml) and <lang>_Plugin_Description -->
     285              </manifestEntries>
     286            </archive>
     287          </configuration>
     288        </plugin>
     289      </plugins>
     290    </pluginManagement>
     291  </build>
     292</project>