spring-vision
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>io.github.codesapienbe.springvision</groupId> <artifactId>spring-vision</artifactId> <version>1.0.251014</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>io.github.codesapienbe.springvision</groupId> <artifactId>spring-vision</artifactId> <version>1.0.251014</version> <packaging>pom</packaging> <name>Spring Vision</name> <description>The seamless, idiomatic Computer Vision starter for the Spring Boot ecosystem</description> <url>https://github.com/codesapienbe/spring-vision</url> <licenses> <license> <name>MIT License</name> <url>https://opensource.org/licenses/MIT</url> <distribution>repo</distribution> </license> </licenses> <developers> <developer> <id>codesapienbe</id> <name>Yilmaz Mustafa</name> <email>yilmaz@codesapien.net</email> <url>https://github.com/codesapienbe</url> </developer> </developers> <scm> <connection>scm:git:git://github.com/codesapienbe/spring-vision.git</connection> <developerConnection>scm:git:ssh://github.com:codesapienbe/spring-vision.git</developerConnection> <url>https://github.com/codesapienbe/spring-vision/tree/main</url> </scm> <properties> <maven.compiler.release>21</maven.compiler.release> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- Spring Boot Version --> <spring-boot.version>3.2.8</spring-boot.version> <spring-cloud.version>2023.0.0</spring-cloud.version> <!-- Dependencies --> <javacv.version>1.5.10</javacv.version> <micrometer.version>1.12.0</micrometer.version> <!-- Additional shared versions --> <commons-math3.version>3.6.1</commons-math3.version> <onnxruntime.version>1.15.1</onnxruntime.version> <djl.version>0.27.0</djl.version> <picocli.version>4.7.5</picocli.version> <spring-ai.version>1.0</spring-ai.version> <!-- OpenCV platform selection: default to Linux x86_64. Change this property in CI/builds to target another platform. --> <opencv.version>4.9.0-${javacv.version}</opencv.version> <opencv.classifier>linux-x86_64</opencv.classifier> <!-- Code Quality & Plugins --> <checkstyle.version>10.12.5</checkstyle.version> <spotless.version>2.43.0</spotless.version> <maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version> <maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version> <maven-failsafe-plugin.version>3.2.5</maven-failsafe-plugin.version> <!-- GPG signing control --> <gpg.skip>false</gpg.skip> </properties> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <distributionManagement> <repository> <id>central</id> <name>Central Portal</name> <url>https://central.sonatype.com/api/v1/publisher/upload</url> </repository> </distributionManagement> <modules> <module>core</module> <module>persistence</module> <module>starter</module> <module>tesseract</module> <module>facebytes</module> <module>mediapipe</module> <module>insightface</module> <module>compreface</module> <module>deepface</module> <module>yolo</module> <module>mcp</module> <module>health</module> <module>cyber</module> <module>robotics</module> </modules> <dependencyManagement> <dependencies> <!-- Spring Boot BOM --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- Spring Cloud BOM --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- JavaCV Dependencies (includes OpenCV) --> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>${javacv.version}</version> </dependency> <!-- Managed OpenCV artifact (platform-specific). Modules should declare org.bytedeco:opencv with the desired <classifier> to pull only the native binaries for that platform. Default classifier is set via ${opencv.classifier} above (linux-x86_64). This removes Android/iOS natives from module dependency declarations and keeps artifacts small. --> <dependency> <groupId>org.bytedeco</groupId> <artifactId>opencv</artifactId> <version>${opencv.version}</version> </dependency> <!-- Micrometer for Metrics --> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>${micrometer.version}</version> </dependency> <!-- Managed versions for facebytes module --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> <version>${commons-math3.version}</version> </dependency> <dependency> <groupId>com.microsoft.onnxruntime</groupId> <artifactId>onnxruntime</artifactId> <version>${onnxruntime.version}</version> </dependency> <dependency> <groupId>com.microsoft.onnxruntime</groupId> <artifactId>onnxruntime_gpu</artifactId> <version>${onnxruntime.version}</version> </dependency> <dependency> <groupId>ai.djl</groupId> <artifactId>api</artifactId> <version>${djl.version}</version> </dependency> <!-- PicoCLI Dependencies --> <dependency> <groupId>info.picocli</groupId> <artifactId>picocli</artifactId> <version>${picocli.version}</version> </dependency> <dependency> <groupId>info.picocli</groupId> <artifactId>picocli-spring-boot-starter</artifactId> <version>${picocli.version}</version> </dependency> <!-- Spring Boot Docker Compose --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-docker-compose</artifactId> <version>${spring-boot.version}</version> </dependency> <!-- Byte Buddy for Java 25 support --> <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> <version>1.14.12</version> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <!-- Maven Compiler Plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> <release>21</release> <compilerArgs> <arg>-parameters</arg> </compilerArgs> <annotationProcessorPaths> <path> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>${spring-boot.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin> <!-- Maven Surefire Plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> <configuration> <argLine> -Xmx2048m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=target/heapdumps/ -Dnet.bytebuddy.experimental=true </argLine> <forkCount>1</forkCount> <reuseForks>false</reuseForks> <excludedGroups>memory-intensive</excludedGroups> </configuration> </plugin> <!-- Maven Failsafe Plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>${maven-failsafe-plugin.version}</version> <configuration> <argLine>-Xmx1024m -Dnet.bytebuddy.experimental=true</argLine> <includes> <include>**/*IT.java</include> <include>**/*IntegrationTest.java</include> </includes> </configuration> </plugin> <!-- Spotless for Code Formatting --> <plugin> <groupId>com.diffplug.spotless</groupId> <artifactId>spotless-maven-plugin</artifactId> <version>${spotless.version}</version> <configuration> <java> <googleJavaFormat> <version>1.18.1</version> <style>GOOGLE</style> </googleJavaFormat> <removeUnusedImports/> <importOrder> <order>java,javax,org,com,</order> </importOrder> </java> </configuration> </plugin> <!-- Checkstyle Plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>3.3.0</version> <configuration> <configLocation>checkstyle.xml</configLocation> <consoleOutput>true</consoleOutput> <failsOnError>true</failsOnError> <linkXRef>false</linkXRef> </configuration> <executions> <execution> <id>validate</id> <phase>validate</phase> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin> <!-- Source, Javadoc, GPG and Nexus Staging (for deployment) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.3.1</version> <executions> <execution> <id>attach-sources</id> <phase>verify</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.6.3</version> <executions> <execution> <id>attach-javadocs</id> <phase>verify</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> <configuration> <doclint>all,-missing</doclint> <failOnError>false</failOnError> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> <configuration> <skip>${gpg.skip}</skip> </configuration> </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> <!-- Add timeout and retry configuration to handle network issues --> <waitUntil>uploaded</waitUntil> <waitMaxTime>600</waitMaxTime> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <!-- Enforce Java 21 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <id>enforce-java</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireJavaVersion> <version>[21,)</version> </requireJavaVersion> </rules> </configuration> </execution> </executions> </plugin> <!-- JaCoCo plugin: instrument tests and enforce 90% coverage --> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.10</version> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>verify</phase> <goals> <goal>report</goal> </goals> </execution> <execution> <id>check</id> <phase>verify</phase> <goals> <goal>check</goal> </goals> <configuration> <rules> <rule> <element>BUNDLE</element> <limits> <limit> <counter>INSTRUCTION</counter> <value>COVEREDRATIO</value> <minimum>0.90</minimum> </limit> <limit> <counter>BRANCH</counter> <value>COVEREDRATIO</value> <minimum>0.90</minimum> </limit> <limit> <counter>LINE</counter> <value>COVEREDRATIO</value> <minimum>0.90</minimum> </limit> </limits> </rule> </rules> </configuration> </execution> </executions> </plugin> </plugins> </build> <profiles> <profile> <id>release</id> <build> <plugins> <!-- Source Plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> <!-- Javadoc Plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> </plugin> <!-- GPG Plugin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> </plugin> <!-- Central Publishing Plugin --> <plugin> <groupId>org.sonatype.central</groupId> <artifactId>central-publishing-maven-plugin</artifactId> <extensions>true</extensions> </plugin> </plugins> </build> </profile> <profile> <id>ci</id> <build> <plugins> <plugin> <groupId>com.diffplug.spotless</groupId> <artifactId>spotless-maven-plugin</artifactId> <executions> <execution> <id>spotless-check</id> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <!-- Example Application Profiles --> <profile> <id>basic</id> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>io.github.codesapienbe.springvision.examples.basicfacedetection.BasicFaceDetectionApplication </mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>javafx</id> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>io.github.codesapienbe.springvision.examples.javafxapplication.JavaFXApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>gwt</id> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>io.github.codesapienbe.springvision.examples.gwtapplication.GwtApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>vaadin</id> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>io.github.codesapienbe.springvision.examples.vaadinapplication.VaadinApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>picocli</id> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>io.github.codesapienbe.springvision.examples.picocliapplication.PicoCLIApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <!-- Platform profiles: set opencv.classifier per target platform. Each profile will auto-activate on matching OS/arch, but can also be selected manually with -P (for CI or cross builds). Common usage examples: mvn -Pplatform-linux-x86_64 clean install mvn -DskipTests clean install (on a linux x86_64 host will auto-activate) --> <profile> <id>platform-linux-x86_64</id> <activation> <os> <name>Linux</name> <arch>x86_64</arch> </os> </activation> <properties> <opencv.classifier>linux-x86_64</opencv.classifier> </properties> </profile> <profile> <id>platform-linux-arm64</id> <activation> <os> <name>Linux</name> <arch>aarch64</arch> </os> </activation> <properties> <opencv.classifier>linux-arm64</opencv.classifier> </properties> </profile> <profile> <id>platform-macosx-x86_64</id> <activation> <os> <family>mac</family> <arch>x86_64</arch> </os> </activation> <properties> <opencv.classifier>macosx-x86_64</opencv.classifier> </properties> </profile> <profile> <id>platform-macosx-arm64</id> <activation> <os> <family>mac</family> <arch>aarch64</arch> </os> </activation> <properties> <opencv.classifier>macosx-arm64</opencv.classifier> </properties> </profile> <profile> <id>platform-windows-x86_64</id> <activation> <os> <family>windows</family> <arch>x86_64</arch> </os> </activation> <properties> <opencv.classifier>windows-x86_64</opencv.classifier> </properties> </profile> </profiles> </project>