mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-17 04:30:45 +00:00
378 lines
15 KiB
XML
378 lines
15 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
~ QQQ - Low-code Application Framework for Engineers.
|
|
~ Copyright (C) 2021-2022. Kingsrook, LLC
|
|
~ 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
|
~ contact@kingsrook.com
|
|
~ https://github.com/Kingsrook/
|
|
~
|
|
~ This program is free software: you can redistribute it and/or modify
|
|
~ it under the terms of the GNU Affero General Public License as
|
|
~ published by the Free Software Foundation, either version 3 of the
|
|
~ License, or (at your option) any later version.
|
|
~
|
|
~ This program is distributed in the hope that it will be useful,
|
|
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
~ GNU Affero General Public License for more details.
|
|
~
|
|
~ You should have received a copy of the GNU Affero General Public License
|
|
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
-->
|
|
|
|
<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.kingsrook.qqq</groupId>
|
|
<artifactId>qqq-parent-project</artifactId>
|
|
<version>${revision}</version>
|
|
<packaging>pom</packaging>
|
|
|
|
<modules>
|
|
<module>qqq-bom</module>
|
|
<module>qqq-backend-core</module>
|
|
<module>qqq-backend-module-api</module>
|
|
<module>qqq-backend-module-filesystem</module>
|
|
<module>qqq-backend-module-rdbms</module>
|
|
<module>qqq-backend-module-sqlite</module>
|
|
<module>qqq-backend-module-mongodb</module>
|
|
<module>qqq-language-support-javascript</module>
|
|
<module>qqq-openapi</module>
|
|
<module>qqq-middleware-picocli</module>
|
|
<module>qqq-middleware-javalin</module>
|
|
<module>qqq-middleware-lambda</module>
|
|
<module>qqq-middleware-slack</module>
|
|
<module>qqq-middleware-api</module>
|
|
<module>qqq-utility-lambdas</module>
|
|
<module>qqq-sample-project</module>
|
|
</modules>
|
|
|
|
<properties>
|
|
<revision>0.26.0-SNAPSHOT</revision>
|
|
|
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
|
<maven.compiler.release>17</maven.compiler.release>
|
|
<maven.compiler.showDeprecation>true</maven.compiler.showDeprecation>
|
|
<maven.compiler.showWarnings>true</maven.compiler.showWarnings>
|
|
<coverage.haltOnFailure>true</coverage.haltOnFailure>
|
|
<coverage.instructionCoveredRatioMinimum>0.80</coverage.instructionCoveredRatioMinimum>
|
|
<coverage.classCoveredRatioMinimum>0.95</coverage.classCoveredRatioMinimum>
|
|
<plugin.shade.phase>none</plugin.shade.phase>
|
|
<testOutputToFile>true</testOutputToFile>
|
|
</properties>
|
|
|
|
<profiles>
|
|
<profile>
|
|
<!-- For qqq-middleware-lambda - to build its shaded jar, its qqq dependencies also need
|
|
to build a shaded jar. So to activate that mode, use this profile (-P buildShadedJar)-->
|
|
<id>buildShadedJar</id>
|
|
<properties>
|
|
<plugin.shade.phase>package</plugin.shade.phase>
|
|
</properties>
|
|
</profile>
|
|
</profiles>
|
|
|
|
<dependencyManagement>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
|
<version>3.1.2</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.logging.log4j</groupId>
|
|
<artifactId>log4j-api</artifactId>
|
|
<version>2.23.0</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.apache.logging.log4j</groupId>
|
|
<artifactId>log4j-core</artifactId>
|
|
<version>2.23.0</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.junit.jupiter</groupId>
|
|
<artifactId>junit-jupiter-engine</artifactId>
|
|
<version>5.8.1</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.junit.jupiter</groupId>
|
|
<artifactId>junit-jupiter-params</artifactId>
|
|
<version>5.8.1</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.assertj</groupId>
|
|
<artifactId>assertj-core</artifactId>
|
|
<version>3.23.1</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
</dependencyManagement>
|
|
|
|
<build>
|
|
<resources>
|
|
<resource>
|
|
<directory>src/main/java</directory>
|
|
<filtering>false</filtering>
|
|
</resource>
|
|
<resource>
|
|
<directory>src/main/resources</directory>
|
|
<filtering>false</filtering>
|
|
</resource>
|
|
</resources>
|
|
<plugins>
|
|
<!-- plugins specifically for this module -->
|
|
<!-- none at this time -->
|
|
|
|
<!-- Common plugins for all qqq modules -->
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<version>3.8.1</version>
|
|
<configuration>
|
|
<compilerArgument>-Xlint:unchecked</compilerArgument>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-surefire-plugin</artifactId>
|
|
<version>3.0.0-M5</version>
|
|
<configuration>
|
|
<!-- Sets the VM argument line used when integration tests are run. -->
|
|
<argLine>@{jaCoCoArgLine}</argLine>
|
|
<!-- Reduce console output for cleaner JUnit output -->
|
|
<redirectTestOutputToFile>${testOutputToFile}</redirectTestOutputToFile>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
|
<version>3.1.2</version>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>com.puppycrawl.tools</groupId>
|
|
<artifactId>checkstyle</artifactId>
|
|
<version>10.16.0</version>
|
|
</dependency>
|
|
</dependencies>
|
|
<executions>
|
|
<execution>
|
|
<id>validate</id>
|
|
<phase>validate</phase>
|
|
<configuration>
|
|
<configLocation>checkstyle/config.xml</configLocation>
|
|
<headerLocation>checkstyle/license.txt</headerLocation>
|
|
<!-- <suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation> -->
|
|
<encoding>UTF-8</encoding>
|
|
<consoleOutput>true</consoleOutput>
|
|
<failsOnError>false</failsOnError>
|
|
<failOnViolation>true</failOnViolation>
|
|
<violationSeverity>warning</violationSeverity>
|
|
<excludes>**/target/generated-sources/*.*</excludes>
|
|
<!-- <linkXRef>false</linkXRef> -->
|
|
<includeTestSourceDirectory>true</includeTestSourceDirectory>
|
|
</configuration>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>flatten-maven-plugin</artifactId>
|
|
<version>1.1.0</version>
|
|
<configuration>
|
|
<updatePomFile>true</updatePomFile>
|
|
<flattenMode>resolveCiFriendliesOnly</flattenMode>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>flatten</id>
|
|
<phase>process-resources</phase>
|
|
<goals>
|
|
<goal>flatten</goal>
|
|
</goals>
|
|
</execution>
|
|
<execution>
|
|
<id>flatten.clean</id>
|
|
<phase>clean</phase>
|
|
<goals>
|
|
<goal>clean</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>com.amashchenko.maven.plugin</groupId>
|
|
<artifactId>gitflow-maven-plugin</artifactId>
|
|
<version>1.18.0</version>
|
|
<configuration>
|
|
<gitFlowConfig>
|
|
<productionBranch>main</productionBranch>
|
|
<developmentBranch>dev</developmentBranch>
|
|
<versionTagPrefix>version-</versionTagPrefix>
|
|
<releaseBranchPrefix>rel/</releaseBranchPrefix>
|
|
</gitFlowConfig>
|
|
<skipFeatureVersion>true</skipFeatureVersion> <!-- Keep feature names out of versions -->
|
|
<postReleaseGoals>install</postReleaseGoals> <!-- Let CI run deploys -->
|
|
<commitDevelopmentVersionAtStart>true</commitDevelopmentVersionAtStart>
|
|
<versionDigitToIncrement>1</versionDigitToIncrement> <!-- In general, we update the minor -->
|
|
<versionProperty>revision</versionProperty>
|
|
<skipUpdateVersion>true</skipUpdateVersion>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>exec-maven-plugin</artifactId>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<version>3.0.0</version>
|
|
<executions>
|
|
<execution>
|
|
<id>test-coverage-summary</id>
|
|
<phase>verify</phase>
|
|
<goals>
|
|
<goal>exec</goal>
|
|
</goals>
|
|
<configuration>
|
|
<executable>sh</executable>
|
|
<arguments>
|
|
<argument>-c</argument>
|
|
<argument>
|
|
<![CDATA[
|
|
if [ ! -e target/site/jacoco/index.html ]; then
|
|
echo "No jacoco coverage report here.";
|
|
exit;
|
|
fi
|
|
|
|
echo
|
|
echo "Jacoco coverage summary report for module: ${project.artifactId}"
|
|
echo " See also target/site/jacoco/index.html"
|
|
echo " and https://www.jacoco.org/jacoco/trunk/doc/counters.html"
|
|
echo "------------------------------------------------------------"
|
|
|
|
# Parse Jacoco HTML coverage summary
|
|
if [ -f target/site/jacoco/index.html ]; then
|
|
echo -e "Instructions Missed\nInstruction Coverage\nBranches Missed\nBranch Coverage\nComplexity Missed\nComplexity Hit\nLines Missed\nLines Hit\nMethods Missed\nMethods Hit\nClasses Missed\nClasses Hit\n" > /tmp/$$.headers
|
|
sed 's/<\/\w\+>/&\n/g' target/site/jacoco/index.html | grep -A 12 '<tfoot>' | grep '<td' | sed 's/<td class="\w\+\d*">\([^<]*\)<\/td>/\1/' | grep -v Total > /tmp/$$.values
|
|
paste /tmp/$$.headers /tmp/$$.values | tail +2 | awk -v FS='\t' '{printf("%-20s %s\n",$1,$2)}'
|
|
rm /tmp/$$.headers /tmp/$$.values
|
|
else
|
|
echo "Jacoco coverage summary was not found.";
|
|
fi
|
|
echo "-----------------------------"
|
|
echo
|
|
|
|
echo "Untested classes, per Jacoco for module: ${project.artifactId}"
|
|
echo "-----------------------------"
|
|
# Parse Jacoco XML reports directly to find classes with 0% coverage
|
|
sed 's/<classs .*\?>/&\n/g;s/<\/class>/&\n/g' target/site/jacoco/jacoco.xml | grep -v 'counter type="CLASS" missed="0"' | sed 's/>.*//;s/.*\///;s/".*//'
|
|
echo "-----------------------------"
|
|
echo
|
|
|
|
]]>
|
|
</argument>
|
|
</arguments>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.jacoco</groupId>
|
|
<artifactId>jacoco-maven-plugin</artifactId>
|
|
<version>0.8.8</version>
|
|
<executions>
|
|
<execution>
|
|
<id>pre-unit-test</id>
|
|
<goals>
|
|
<goal>prepare-agent</goal>
|
|
</goals>
|
|
<configuration>
|
|
<propertyName>jaCoCoArgLine</propertyName>
|
|
</configuration>
|
|
</execution>
|
|
<execution>
|
|
<id>unit-test-check</id>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
<configuration>
|
|
<!-- Gives us the ability to pass a parameter to not fail due to coverage E.g. -Dcoverage.haltOnFailure=false -->
|
|
<haltOnFailure>${coverage.haltOnFailure}</haltOnFailure>
|
|
<rules>
|
|
<rule>
|
|
<element>BUNDLE</element>
|
|
<limits>
|
|
<limit>
|
|
<counter>INSTRUCTION</counter>
|
|
<value>COVEREDRATIO</value>
|
|
<minimum>${coverage.instructionCoveredRatioMinimum}</minimum>
|
|
</limit>
|
|
<limit>
|
|
<counter>CLASS</counter>
|
|
<value>COVEREDRATIO</value>
|
|
<minimum>${coverage.classCoveredRatioMinimum}</minimum>
|
|
</limit>
|
|
</limits>
|
|
</rule>
|
|
</rules>
|
|
</configuration>
|
|
</execution>
|
|
<execution>
|
|
<id>post-unit-test</id>
|
|
<!-- <phase>verify</phase> -->
|
|
<phase>post-integration-test</phase>
|
|
<goals>
|
|
<goal>report</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
|
|
<!-- mvn javadoc:aggregate -->
|
|
<reporting>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-javadoc-plugin</artifactId>
|
|
<version>3.6.2</version>
|
|
<reportSets>
|
|
<reportSet>
|
|
<id>aggregate</id>
|
|
<inherited>false</inherited>
|
|
<reports>
|
|
<report>aggregate</report>
|
|
</reports>
|
|
</reportSet>
|
|
<reportSet>
|
|
<id>default</id>
|
|
<reports>
|
|
<report>javadoc</report>
|
|
</reports>
|
|
</reportSet>
|
|
</reportSets>
|
|
</plugin>
|
|
</plugins>
|
|
</reporting>
|
|
|
|
<repositories>
|
|
<repository>
|
|
<id>github-qqq-maven-registry</id>
|
|
<name>GitHub QQQ Maven Registry</name>
|
|
<url>https://maven.pkg.github.com/Kingsrook/qqq-maven-registry</url>
|
|
</repository>
|
|
</repositories>
|
|
|
|
<distributionManagement>
|
|
<repository>
|
|
<id>github-qqq-maven-registry</id>
|
|
<name>GitHub QQQ Maven Registry</name>
|
|
<url>https://maven.pkg.github.com/Kingsrook/qqq-maven-registry</url>
|
|
</repository>
|
|
</distributionManagement>
|
|
|
|
</project>
|