apify-client
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>com.apify</groupId>
<artifactId>apify-client</artifactId>
<version>0.5.0</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.apify</groupId>
<artifactId>apify-client</artifactId>
<version>0.5.0</version>
<packaging>jar</packaging>
<name>Apify Java Client</name>
<description>Official (experimental, AI-generated and AI-maintained) Java client for the Apify API.</description>
<url>https://github.com/apify/apify-client-java</url>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<name>Apify</name>
<email>support@apify.com</email>
<organization>Apify</organization>
<organizationUrl>https://apify.com</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/apify/apify-client-java.git</connection>
<developerConnection>scm:git:git@github.com:apify/apify-client-java.git</developerConnection>
<url>https://github.com/apify/apify-client-java</url>
</scm>
<properties>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jackson.version>3.2.1</jackson.version>
<junit.version>5.10.2</junit.version>
<brotli4j.version>1.23.0</brotli4j.version>
<slf4j.version>2.0.13</slf4j.version>
</properties>
<dependencies>
<!-- Jackson 3's package rename: databind/core now live under the tools.jackson.core
groupId; jackson-annotations stayed at the old groupId/package, pulled in
transitively. Java-time (de)serialization is built into jackson-databind itself in
Jackson 3 (no separate jackson-datatype-jsr310 module/registration needed). -->
<dependency>
<groupId>tools.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- Logging facade only: the client logs (default log-redirection destination, transport
warnings) through SLF4J's API and binds to whatever logging backend the consuming
application already uses. It ships no backend of its own; an application that wires no
SLF4J binding at all simply gets SLF4J's standard no-op-with-one-time-warning behavior. -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- Brotli request-body compression. The client prefers brotli (Content-Encoding: br) and
falls back to gzip whenever no brotli native codec is on the classpath, which is the
case by default: this is the core Java API only, `optional` so it is not forced on
downstream consumers transitively. A consumer that wants brotli (instead of the always-
available gzip fallback) opts in by adding brotli4j's own platform-specific native
artifact (e.g. `native-linux-x86_64`) to their own project. -->
<dependency>
<groupId>com.aayushatharva.brotli4j</groupId>
<artifactId>brotli4j</artifactId>
<version>${brotli4j.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- Test-only: exercises the real brotli path (CompressionTest) instead of always skipping
it via the gzip fallback, without forcing a native codec on every consumer's classpath. -->
<dependency>
<groupId>com.aayushatharva.brotli4j</groupId>
<artifactId>native-linux-x86_64</artifactId>
<version>${brotli4j.version}</version>
<scope>test</scope>
</dependency>
<!-- Test-only SLF4J binding, so log-redirection output (e.g. the examples/tests exercising
the default destination) is visible on the console during a build, matching the previous
java.util.logging default's observable behavior. -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!-- Filter apify-client-build.properties so ${project.version} is substituted at build
time. The version-drift test reads the filtered value and asserts it equals
Version.CLIENT_VERSION, guarding against pom.xml and the constant drifting apart on a
release bump. Kept in a dedicated directory so filtering never touches other resources. -->
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
<testResource>
<directory>src/test/resources-filtered</directory>
<filtering>true</filtering>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<!-- Type-checking rigor: surface all javac warnings in CI. -->
<compilerArgs>
<arg>-Xlint:all</arg>
</compilerArgs>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<!-- Be gentle on the shared integration-test account: run test classes serially. -->
<forkCount>1</forkCount>
<reuseForks>true</reuseForks>
<!-- Keep running the test suite on the classpath, unaffected by module-info's
`exports`: tests intentionally reach into com.apify.client.internal (e.g.
HttpClientCore, ResourceContext) as white-box unit tests, which the module
path would block since that package is not exported. -->
<useModulePath>false</useModulePath>
</configuration>
</plugin>
<!-- Static-analysis linter (bug finder). `spotbugs:check` runs in CI and fails the
build on findings. Effort Max / threshold
Medium; a small, documented exclude filter covers the deliberate raw-bytes DTO
accessors (returning the actual record/response bytes is the API contract). -->
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.8.6.4</version>
<configuration>
<effort>Max</effort>
<threshold>Medium</threshold>
<failOnError>true</failOnError>
<includeTests>false</includeTests>
<excludeFilterFile>spotbugs-exclude.xml</excludeFilterFile>
</configuration>
</plugin>
<!-- Formatter + lint gate. Spotless enforces google-java-format and import hygiene;
`spotless:check` runs in CI, `spotless:apply` reformats locally. -->
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>2.43.0</version>
<configuration>
<java>
<googleJavaFormat>
<version>1.22.0</version>
<style>GOOGLE</style>
</googleJavaFormat>
<removeUnusedImports/>
<importOrder/>
<trimTrailingWhitespace/>
<endWithNewline/>
</java>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<!-- Release profile: attaches sources and javadoc, GPG-signs artifacts, and publishes
to Maven Central via the Sonatype Central Publisher Portal. The publish workflow
authenticates the "central" server with the Maven Central repository credentials from
the "Publishing" GitHub environment. Activated by the publish CI workflow with -Prelease. -->
<profile>
<id>release</id>
<build>
<plugins>
<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>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<!-- Register the JDK-convention informational tags (JEP 8068562) so
javadoc does not reject them as unknown tags. -->
<tags>
<tag>
<name>apiNote</name>
<placement>a</placement>
<head>API Note:</head>
</tag>
<tag>
<name>implSpec</name>
<placement>a</placement>
<head>Implementation Requirements:</head>
</tag>
<tag>
<name>implNote</name>
<placement>a</placement>
<head>Implementation Note:</head>
</tag>
</tags>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.5.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>