<!-- Notice: if using java 9 or 10 jres, it is possible to simply use here "8", "9" or "10". But if using java 8 jre, "8" is not an allowed value but only "1.8"-->
<!-- Forcing the enforcer-plugin version: somehow the one declared in pluginManagement doesn't go through without this. No idea why. Other plugins do respect the version in pluginManagement -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.5.0</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.6</version>
</extension>
</extensions>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- binding for log4j 2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>${log4j.version}</version>
<!-- runtime scope includes the test scope as well -->
<scope>runtime</scope>
</dependency>
<!-- Log4j API and Core implementation required for binding -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
<!-- runtime scope includes the test scope as well -->
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
<!-- runtime scope includes the test scope as well -->
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.biojava.thirdparty</groupId>
<artifactId>forester</artifactId>
<version>1.039</version>
</dependency>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>4.0.3</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.6.0-jre</version>
</dependency>
</dependencies>
</dependencyManagement>
<reporting>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<!-- Make a single javadoc site at target/site/apidocs subdir with all sub-modules, see:
<!-- Needed for site plugin, to do mvn site:stage (without which a multimodule project won't have all the correct directory structure) -->
<!-- Also seems to be needed at mvn release:perform time, where a mvn site:deploy runs and complains if this is not present -->
<id>biojava.org</id>
<name>The biojava.org site</name>
<!-- NOTE this is not a proper URL supported by mvn site:deploy . That's why in site configuration for release profile we disable deployment with skipDeploy -->
<!-- NOTE we don't actually deploy the "site" but just the "apidocs" part of it to /docs/api -->
<url>https://biojava.org/docs/site</url>
</site>
</distributionManagement>
<profiles>
<profile>
<!-- This is the profile needed for release, e.g.:
mvn -Prelease release:clean release:prepare
mvn -Prelease release:perform
-->
<id>release</id>
<build>
<plugins>
<!-- handles uploading the build to the maven central repository -->
<!-- Note your maven settings.xml needs a server section with <id> that matches this one and valid credentials for maven central -->
<publishingServerId>central</publishingServerId>
<!-- If this is set to false, the artifact is only staged and then needs pushing manually via the web interface at https://central.sonatype.com/publishing/deployments -->
<!-- With true it publishes automatically -->
<autoPublish>true</autoPublish>
<!-- NOTE this is to wait for the new release to be validated and publicly available. Not essential but nice that when build is done, we know the artifacts are available publicly -->
<waitUntil>published</waitUntil>
</configuration>
</plugin>
<!-- for code signing -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<!-- This is necessary for gpg to not try to use the pinentry programs -->
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
<!-- create source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- create javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.11.2</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.5.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.21.0</version>
<configuration>
<!-- In distributionManagement we have a site setting with a fake url (needed for mvn site:stage to work). This is here to skip the deployment that would fail for the fake url -->
<skipDeploy>true</skipDeploy>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- Note: before you can use this build profile you need to set up an
environment that contains correctly signed keys. Configure the keystore properties
and the profile in ~/.m2/settings.xml -->
<!-- Note: as of March 2021 I'm not sure what this profile is needed for. I don't think it is needed for releases, perhaps for automated snapshot builds? - JD 2021 -->