From f13edc52bd0fb8cd7c0670b7e598a56dced666b0 Mon Sep 17 00:00:00 2001 From: MaxKey Date: Thu, 22 Apr 2021 08:59:01 +0800 Subject: [PATCH] Version For use jar --- build.gradle | 253 +++++++++--------- config/build_docker.gradle | 247 +++++++++-------- config/build_jar.gradle | 247 +++++++++-------- config/build_standard.gradle | 247 +++++++++-------- gradle.properties | 132 ++++++++- .../service/SocialsAssociate.java | 4 +- .../main/java/org/maxkey/entity/Accounts.java | 4 +- .../org/maxkey/entity/ChangePassword.java | 4 +- .../java/org/maxkey/entity/ExcelImport.java | 4 +- .../main/java/org/maxkey/entity/Groups.java | 4 +- .../java/org/maxkey/entity/HistoryLogin.java | 4 +- .../org/maxkey/entity/HistoryLoginApps.java | 4 +- .../java/org/maxkey/entity/HistoryLogs.java | 4 +- .../java/org/maxkey/entity/Navigations.java | 4 +- .../main/java/org/maxkey/entity/Notices.java | 4 +- .../java/org/maxkey/entity/Organizations.java | 4 +- .../org/maxkey/entity/PasswordPolicy.java | 4 +- .../java/org/maxkey/entity/Registration.java | 4 +- .../java/org/maxkey/entity/Resources.java | 4 +- .../org/maxkey/entity/RolePermissions.java | 4 +- .../main/java/org/maxkey/entity/Roles.java | 4 +- .../org/maxkey/entity/Saml20Metadata.java | 4 +- .../main/java/org/maxkey/entity/UserInfo.java | 4 +- .../org/maxkey/entity/UserInfoAdjoint.java | 4 +- .../java/org/maxkey/entity/apps/Apps.java | 4 +- .../org/maxkey/entity/apps/AppsAdapters.java | 4 +- .../org/maxkey/entity/xml/UserInfoXML.java | 5 +- .../java/org/maxkey/web/BasicController.java | 4 +- maxkey-lib/mybatis-jpa-extra-2.3.jar | Bin 75557 -> 78778 bytes ...atis-jpa-extra-spring-boot-starter-2.3.jar | Bin 21888 -> 20010 bytes .../persistence/mapper/ReportMapper.java | 4 +- .../service/OrganizationsService.java | 1 + .../persistence/service/ReportService.java | 4 +- .../src/main/resources/application.properties | 5 +- .../src/main/resources/maxkey.properties | 2 - .../resources/application-http.properties | 3 +- .../resources/application-https.properties | 3 +- .../src/main/resources/application.properties | 2 +- 38 files changed, 676 insertions(+), 567 deletions(-) delete mode 100644 maxkey-web-manage/src/main/resources/maxkey.properties diff --git a/build.gradle b/build.gradle index 5e02bbb5d..2384d7962 100644 --- a/build.gradle +++ b/build.gradle @@ -104,7 +104,9 @@ subprojects { repositories { mavenLocal() - maven { url 'https://maven.aliyun.com/nexus/content/groups/public/'} + maven { url "https://maven.aliyun.com/repository/central/"} + maven { url "https://maven.aliyun.com/repository/public/"} + maven { url "https://maven.aliyun.com/repository/spring/"} maven { url "https://repo.spring.io/plugins-release/" } maven { url "https://repo.spring.io/milestone" } maven { url "https://repo1.maven.org/maven2/" } @@ -120,49 +122,53 @@ subprojects { } //all dependencies - dependencies { + dependencies { + //for Test and Compile - testImplementation 'junit:junit:4.11' - compileOnly 'junit:junit:4.11' - testImplementation group: 'org.mockito', name: 'mockito-all', version: '1.10.19' - testImplementation group: 'xmlunit', name: 'xmlunit', version: '1.6' + testImplementation group: 'junit', name: 'junit', version: "${junitVersion}" + compileOnly group: 'junit', name: 'junit', version: "${junitVersion}" + testImplementation group: 'org.mockito', name: 'mockito-all', version: "${mockitoallVersion}" + testImplementation group: 'xmlunit', name: 'xmlunit', version: "${xmlunitVersion}" //apache - implementation group: 'commons-beanutils', name: 'commons-beanutils', version: '1.9.3' - implementation group: 'commons-codec', name: 'commons-codec', version: '1.15' - implementation group: 'commons-collections', name: 'commons-collections', version: '3.2.2' - implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' - //implementation group: 'org.apache.commons', name: 'commons-csv', version: '1.7' - implementation group: 'org.apache.commons', name: 'commons-text', version: '1.9' - implementation group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.6.0' - implementation group: 'commons-dbutils', name: 'commons-dbutils', version: '1.7' - implementation group: 'org.apache.commons', name: 'commons-digester3', version: '3.2' - implementation group: 'commons-digester', name: 'commons-digester', version: '2.1' - implementation group: 'commons-io', name: 'commons-io', version: '2.8.0' - implementation group: 'commons-lang', name: 'commons-lang', version: '2.6' - implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.11' - implementation group: 'commons-logging', name: 'commons-logging', version: '1.2' - implementation group: 'org.apache.commons', name: 'commons-pool2', version: '2.6.2' - implementation group: 'commons-httpclient', name: 'commons-httpclient', version: '3.1' - implementation group: 'commons-fileupload', name: 'commons-fileupload', version: '1.4' - implementation group: 'org.apache.commons', name: 'commons-email', version: '1.5' + implementation group: 'commons-beanutils', name: 'commons-beanutils', version: "${commonsbeanutilsVersion}" + implementation group: 'commons-codec', name: 'commons-codec', version: "${commonscodecVersion}" + implementation group: 'commons-collections', name: 'commons-collections', version: "${commonscollectionsVersion}" + implementation group: 'org.apache.commons', name: 'commons-collections4', version: "${commonscollections4Version}" + //implementation group: 'org.apache.commons', name: 'commons-csv', version: "${commonscsvVersion}" + implementation group: 'org.apache.commons', name: 'commons-text', version: "${commonstextVersion}" + implementation group: 'org.apache.commons', name: 'commons-dbcp2', version: "${commonsdbcp2Version}" + implementation group: 'commons-dbutils', name: 'commons-dbutils', version: "${commonsdbutilsVersion}" + implementation group: 'org.apache.commons', name: 'commons-digester3', version: "${commonsdigester3Version}" + implementation group: 'commons-digester', name: 'commons-digester', version: "${commonsdigesterVersion}" + implementation group: 'commons-io', name: 'commons-io', version: "${commonsioVersion}" + implementation group: 'commons-lang', name: 'commons-lang', version: "${commonslangVersion}" + implementation group: 'org.apache.commons', name: 'commons-lang3', version: "${commonslang3Version}" + implementation group: 'commons-logging', name: 'commons-logging', version: "${commonsloggingVersion}" + implementation group: 'org.apache.commons', name: 'commons-pool2', version: "${commonspool2Version}" + implementation group: 'commons-httpclient', name: 'commons-httpclient', version: "${commonshttpclientVersion}" + implementation group: 'commons-fileupload', name: 'commons-fileupload', version: "${commonsfileuploadVersion}" + implementation group: 'org.apache.commons', name: 'commons-email', version: "${commonsemailVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'fluent-hc', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpclient-cache', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpmime', version: "${httpcomponentsVersion}" - implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.13' - implementation group: 'org.apache.velocity', name: 'velocity', version: '1.7' - implementation group: 'velocity', name: 'velocity-dep', version: '1.4' - implementation group: 'org.freemarker', name: 'freemarker', version: '2.3.31' - implementation group: 'org.apache.xmlbeans', name: 'xmlbeans', version: '3.0.1' - implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.20' + implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: "${httpcoreVersion}" + implementation group: 'org.apache.velocity', name: 'velocity', version: "${velocityVersion}" + implementation group: 'velocity', name: 'velocity-dep', version: "${velocitydepVersion}" + implementation group: 'org.freemarker', name: 'freemarker', version: "${freemarkerVersion}" + implementation group: 'org.apache.xmlbeans', name: 'xmlbeans', version: "${xmlbeansVersion}" + implementation group: 'org.apache.commons', name: 'commons-compress', version: "${commonscompressVersion}" implementation group: 'org.apache.poi', name: 'poi', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-ooxml', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-scratchpad', version: "${poiVersion}" - //implementation group: 'org.apache.commons', name: 'not-yet-commons-ssl', version: '0.3.9' - - //logs + //implementation group: 'org.apache.commons', name: 'not-yet-commons-ssl', version: "${notyetcommonssslVersion}" + //tomcat embed Core Tomcat implementation + implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: "${tomcatVersion}" + //JULI logging implementation for embedded Tomcat + implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-logging-juli', version: "${tomcatembedloggingjuliVersion}" + //apache logs implementation group: 'org.apache.logging.log4j', name: 'log4j-1.2-api', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: "${log4jVersion}" @@ -170,8 +176,9 @@ subprojects { implementation group: 'org.apache.logging.log4j', name: 'log4j-jul', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-web', version: "${log4jVersion}" + //logs implementation group: 'org.slf4j', name: 'slf4j-api', version: "${slf4jVersion}" - implementation group: 'org.jboss.logging', name: 'jboss-logging', version: '3.4.1.Final' + implementation group: 'org.jboss.logging', name: 'jboss-logging', version: "${jbossloggingVersion}" //spring implementation group: 'org.springframework', name: 'spring-aop', version: "${springVersion}" implementation group: 'org.springframework', name: 'spring-aspects', version: "${springVersion}" @@ -197,11 +204,11 @@ subprojects { //kafka support // https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients - implementation group: 'org.apache.kafka', name: 'kafka-clients', version: '2.6.1' + implementation group: 'org.apache.kafka', name: 'kafka-clients', version: "${kafkaclientsVersion}" // https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka - implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: '2.6.6' + implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: "${springkafkaVersion}" // https://mvnrepository.com/artifact/org.springframework.retry/spring-retry - implementation group: 'org.springframework.retry', name: 'spring-retry', version: '1.3.0' + implementation group: 'org.springframework.retry', name: 'spring-retry', version: "${springretryVersion}" //spring-security implementation group: 'org.springframework.security', name: 'spring-security-core', version: "${springSecurityVersion}" @@ -228,102 +235,105 @@ subprojects { implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}" implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}" - implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: '2.0.0.RELEASE' - implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: '2.0.0.RELEASE' - + implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}" + implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}" //saml - implementation group: 'org.opensaml', name: 'opensaml', version: '2.6.6' - implementation group: 'org.opensaml', name: 'openws', version: '1.5.6' - implementation group: 'org.opensaml', name: 'xmltooling', version: '1.4.6' - implementation group: 'net.shibboleth.utilities', name: 'java-support', version: '7.5.1' - //jose-jwt - implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.4.1' - implementation group: 'net.jcip', name: 'jcip-annotations', version: '1.0' - implementation group: 'net.minidev', name: 'json-smart', version: '2.3' - implementation group: 'net.minidev', name: 'asm', version: '1.0.2' + implementation group: 'org.opensaml', name: 'opensaml', version: "${opensamlVersion}" + implementation group: 'org.opensaml', name: 'openws', version: "${openwsVersion}" + implementation group: 'org.opensaml', name: 'xmltooling', version: "${xmltoolingVersion}" + implementation group: 'net.shibboleth.utilities', name: 'java-support', version: "${javasupportVersion}" + //jose-jwt + implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: "${nimbusjosejwtVersion}" + implementation group: 'net.jcip', name: 'jcip-annotations', version: "${jcipannotationsVersion}" + implementation group: 'net.minidev', name: 'json-smart', version: "${minidevjsonsmartVersion}" + implementation group: 'net.minidev', name: 'asm', version: "${minidevasmVersion}" //oauth third party JustAuth - implementation group: 'com.xkcoding.http', name: 'simple-http', version: '1.0.3' - implementation group: 'me.zhyd.oauth', name: 'JustAuth', version: '1.15.9' + implementation group: 'com.xkcoding.http', name: 'simple-http', version: "${simplehttpVersion}" + implementation group: 'me.zhyd.oauth', name: 'JustAuth', version: "${JustAuthVersion}" //common - implementation group: 'org.javassist', name: 'javassist', version: '3.23.0-GA' - implementation group: 'org.owasp.esapi', name: 'esapi', version: '2.2.0.0' - implementation group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2' + implementation group: 'org.javassist', name: 'javassist', version: "${javassistVersion}" + implementation group: 'org.owasp.esapi', name: 'esapi', version: "${esapiVersion}" + implementation group: 'com.sun.mail', name: 'javax.mail', version: "${javaxmailVersion}" // https://mvnrepository.com/artifact/org.eclipse.persistence/javax.persistence // for mybatis-jpa-extra - implementation group: 'org.eclipse.persistence', name: 'javax.persistence', version: '2.2.1' - implementation group: 'javax.activation', name: 'activation', version: '1.1.1' - implementation group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2' - implementation group: 'javax.transaction', name: 'jta', version: '1.1' - implementation group: 'javax.transaction', name: 'javax.transaction-api', version: '1.3' - implementation group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final' - implementation group: 'javax.xml', name: 'jsr173', version: '1.0' - implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1' - implementation group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0.1' - implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.2' - implementation group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.3.2' + implementation group: 'org.eclipse.persistence', name: 'javax.persistence', version: "${javaxpersistenceVersion}" + implementation group: 'javax.activation', name: 'activation', version: "${activationVersion}" + implementation group: 'javax.annotation', name: 'javax.annotation-api', version: "${javaxannotationapiVersion}" + implementation group: 'javax.transaction', name: 'jta', version: "${jtaVersion}" + implementation group: 'javax.transaction', name: 'javax.transaction-api', version: "${javaxtransactionapiVersion}" + implementation group: 'javax.validation', name: 'validation-api', version: "${validationapiVersion}" + implementation group: 'javax.xml', name: 'jsr173', version: "${jsr173Version}" + implementation group: 'javax.xml.bind', name: 'jaxb-api', version: "${jaxbapiVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-core', version: "${jaxbcoreVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: "${jaxbimplVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: "${jaxbxjcVersion}" //crypto implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: "${bouncycastleVersion}" implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: "${bouncycastleVersion}" implementation group: 'org.bouncycastle', name: 'bcprov-ext-jdk15on', version: "${bouncycastleVersion}" - implementation group: 'com.google.crypto.tink', name: 'tink', version: '1.4.0' + //google + implementation group: 'com.google.crypto.tink', name: 'tink', version: "${tinkVersion}" //kaptcha - implementation group: 'com.jhlabs', name: 'filters', version: '2.0.235-1' - implementation group: 'com.github.penggle', name: 'kaptcha', version: '2.3.2' + implementation group: 'com.jhlabs', name: 'filters', version: "${jhlabsfiltersVersion}" + implementation group: 'com.github.penggle', name: 'kaptcha', version: "${kaptchaVersion}" + //json + implementation group: 'com.google.code.gson', name: 'gson', version: "${gsonVersion}" + //reactive + implementation group: 'org.reactivestreams', name: 'reactive-streams', version: "${reactivestreamsVersion}" + implementation group: 'io.projectreactor', name: 'reactor-core', version: "${reactorcoreVersion}" + implementation group: 'eu.tekul', name: 'szxcvbn_2.9.2', version: "${szxcvbnVersion}" + //quartz + implementation group: 'org.quartz-scheduler', name: 'quartz', version: "${quartzVersion}" + //database + implementation group: 'mysql', name: 'mysql-connector-java', version: "${mysqlconnectorjavaVersion}" + implementation group: 'com.alibaba', name: 'druid', version: "${druidVersion}" + implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: "${druidspringbootstarterVersion}" + implementation group: 'redis.clients', name: 'jedis', version: "${jedisVersion}" + implementation group: 'org.ehcache', name: 'ehcache', version: "${ehcacheVersion}" + //mybatis + implementation group: 'org.mybatis', name: 'mybatis', version: "${mybatisVersion}" + implementation group: 'org.mybatis', name: 'mybatis-spring', version: "${mybatisspringVersion}" + //hibernate + implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: "${hibernateVersion}" + implementation group: 'org.hibernate', name: 'hibernate-validator-cdi', version: "${hibernateVersion}" + implementation group: 'org.hibernate.validator', name: 'hibernate-validator-annotation-processor', version: "${hibernateVersion}" + //usefull + implementation group: 'joda-time', name: 'joda-time', version: "${jodatimeVersion}" + implementation group: 'org.yaml', name: 'snakeyaml', version: "${snakeyamlVersion}" + implementation group: 'net.sourceforge.nekohtml', name: 'nekohtml', version: "${nekohtmlVersion}" + implementation group: 'org.jdom', name: 'jdom', version: "${jdomVersion}" + implementation group: 'com.google.zxing', name: 'core', version: "${zxingcoreVersion}" + implementation group: 'com.google.guava', name: 'guava', version: "${guavaVersion}" + implementation group: 'ognl', name: 'ognl', version: "${ognlVersion}" + implementation group: 'cglib', name: 'cglib', version: "${cglibVersion}" + implementation group: 'org.ow2.asm', name: 'asm', version: "${asmVersion}" + implementation group: 'aopalliance', name: 'aopalliance', version: "${aopallianceVersion}" + implementation group: 'org.aspectj', name: 'aspectjtools', version: "${aspectjtoolsVersion}" + implementation group: 'dom4j', name: 'dom4j', version: "${dom4jVersion}" + implementation group: 'xalan', name: 'serializer', version: "${serializerVersion}" + implementation group: 'xml-resolver', name: 'xml-resolver', version: "${xmlresolverVersion}" + implementation group: 'org.apache.santuario', name: 'xmlsec', version: "${xmlsecVersion}" + implementation group: 'org.ogce', name: 'xpp3', version: "${xpp3Version}" + implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: "${xstreamVersion}" + implementation group: 'org.passay', name: 'passay', version: "${passayVersion}" + implementation group: 'io.micrometer', name: 'micrometer-core', version: "${micrometercoreVersion}" + implementation group: 'org.latencyutils', name: 'LatencyUtils', version: "${LatencyUtilsVersion}" + implementation group: 'org.codehaus.woodstox', name: 'stax2-api', version: "${stax2apiVersion}" + //阿里云 + implementation group: 'com.aliyun', name: 'aliyun-java-sdk-core', version: "${aliyunjavasdkcoreVersion}" + //腾讯云 + implementation group: 'com.tencentcloudapi', name: 'tencentcloud-sdk-java', version: "${tencentcloudsdkjavaVersion}" //json - implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6' implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: "${jacksonVersion}" - - implementation group: 'com.fasterxml', name: 'classmate', version: '1.5.0' - implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.74' - //reactive - implementation group: 'org.reactivestreams', name: 'reactive-streams', version: '1.0.2' - implementation group: 'io.projectreactor', name: 'reactor-core', version: '3.2.10.RELEASE' - implementation group: 'eu.tekul', name: 'szxcvbn_2.9.2', version: '0.2' - //quartz - implementation group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2' - //database - implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.21' - implementation group: 'com.alibaba', name: 'druid', version: '1.2.5' - implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: '1.2.5' - implementation group: 'redis.clients', name: 'jedis', version: '3.4.1' - implementation group: 'org.ehcache', name: 'ehcache', version: '3.9.0' - //mybatis - implementation group: 'org.mybatis', name: 'mybatis', version: '3.5.6' - implementation group: 'org.mybatis', name: 'mybatis-spring', version: '2.0.6' - //hibernate - implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: "${hibernateVersion}" - implementation group: 'org.hibernate', name: 'hibernate-validator-cdi', version: "${hibernateVersion}" - implementation group: 'org.hibernate.validator', name: 'hibernate-validator-annotation-processor', version: "${hibernateVersion}" - //usefull - implementation group: 'joda-time', name: 'joda-time', version: '2.10.9' - implementation group: 'org.yaml', name: 'snakeyaml', version: '1.26' - implementation group: 'net.sourceforge.nekohtml', name: 'nekohtml', version: '1.9.22' - implementation group: 'org.jdom', name: 'jdom', version: '2.0.2' - implementation group: 'com.google.zxing', name: 'core', version: '3.4.1' - implementation group: 'com.google.guava', name: 'guava', version: '30.1-jre' - implementation group: 'ognl', name: 'ognl', version: '3.2.14' - implementation group: 'cglib', name: 'cglib', version: '3.3.0' - implementation group: 'org.ow2.asm', name: 'asm', version: '7.3.1' - implementation group: 'aopalliance', name: 'aopalliance', version: '1.0' - implementation group: 'org.aspectj', name: 'aspectjtools', version: '1.9.4' - implementation group: 'dom4j', name: 'dom4j', version: '1.6.1' - implementation group: 'xalan', name: 'serializer', version: '2.7.2' - implementation group: 'xml-resolver', name: 'xml-resolver', version: '1.2' - implementation group: 'org.apache.santuario', name: 'xmlsec', version: '1.5.8' - implementation group: 'org.ogce', name: 'xpp3', version: '1.1.6' - implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.10' - implementation group: 'org.passay', name: 'passay', version: '1.6.0' - implementation group: 'io.micrometer', name: 'micrometer-core', version: '1.6.4' - implementation group: 'org.latencyutils', name: 'LatencyUtils', version: '2.0.3' - implementation group: 'org.codehaus.woodstox', name: 'stax2-api', version: '4.2.1' - + implementation group: 'com.fasterxml', name: 'classmate', version: "${classmateVersion}" + implementation group: 'com.alibaba', name: 'fastjson', version: "${fastjsonVersion}" //docs - implementation group: 'org.mapstruct', name: 'mapstruct', version: '1.4.1.Final' + implementation group: 'org.mapstruct', name: 'mapstruct', version: "${mapstructVersion}" implementation group: 'io.swagger', name: 'swagger-annotations', version: "${swaggerVersion}" implementation group: 'io.swagger', name: 'swagger-models', version: "${swaggerVersion}" implementation group: 'io.swagger.core.v3', name: 'swagger-annotations', version: "${swaggerV3Version}" @@ -352,18 +362,9 @@ subprojects { implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-ui', version: "${knife4jVersion}" implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-boot-starter', version: "${knife4jVersion}" implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-boot-autoconfigure', version: "${knife4jVersion}" - - //local jars + + //local jars implementation fileTree(dir: "${rootDir}/maxkey-lib/", include: '*.jar') - //阿里云 - implementation group: 'com.aliyun', name: 'aliyun-java-sdk-core', version: '4.5.1' - //腾讯云 - implementation group: 'com.tencentcloudapi', name: 'tencentcloud-sdk-java', version: '3.1.33' - - //tomcat embed Core Tomcat implementation - implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: "${tomcatVersion}" - //JULI logging implementation for embedded Tomcat - implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-logging-juli', version: '8.5.2' } jar { diff --git a/config/build_docker.gradle b/config/build_docker.gradle index 5294fb66e..bc533b5a9 100644 --- a/config/build_docker.gradle +++ b/config/build_docker.gradle @@ -121,46 +121,50 @@ subprojects { //all dependencies dependencies { //for Test and Compile - testImplementation 'junit:junit:4.11' - compileOnly 'junit:junit:4.11' - testImplementation group: 'org.mockito', name: 'mockito-all', version: '1.10.19' - testImplementation group: 'xmlunit', name: 'xmlunit', version: '1.6' + testImplementation group: 'junit', name: 'junit', version: "${junitVersion}" + compileOnly group: 'junit', name: 'junit', version: "${junitVersion}" + testImplementation group: 'org.mockito', name: 'mockito-all', version: "${mockitoallVersion}" + testImplementation group: 'xmlunit', name: 'xmlunit', version: "${xmlunitVersion}" + //apache - implementation group: 'commons-beanutils', name: 'commons-beanutils', version: '1.9.3' - implementation group: 'commons-codec', name: 'commons-codec', version: '1.15' - implementation group: 'commons-collections', name: 'commons-collections', version: '3.2.2' - implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' - //implementation group: 'org.apache.commons', name: 'commons-csv', version: '1.7' - implementation group: 'org.apache.commons', name: 'commons-text', version: '1.9' - implementation group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.6.0' - implementation group: 'commons-dbutils', name: 'commons-dbutils', version: '1.7' - implementation group: 'org.apache.commons', name: 'commons-digester3', version: '3.2' - implementation group: 'commons-digester', name: 'commons-digester', version: '2.1' - implementation group: 'commons-io', name: 'commons-io', version: '2.8.0' - implementation group: 'commons-lang', name: 'commons-lang', version: '2.6' - implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.11' - implementation group: 'commons-logging', name: 'commons-logging', version: '1.2' - implementation group: 'org.apache.commons', name: 'commons-pool2', version: '2.6.2' - implementation group: 'commons-httpclient', name: 'commons-httpclient', version: '3.1' - implementation group: 'commons-fileupload', name: 'commons-fileupload', version: '1.4' - implementation group: 'org.apache.commons', name: 'commons-email', version: '1.5' + implementation group: 'commons-beanutils', name: 'commons-beanutils', version: "${commonsbeanutilsVersion}" + implementation group: 'commons-codec', name: 'commons-codec', version: "${commonscodecVersion}" + implementation group: 'commons-collections', name: 'commons-collections', version: "${commonscollectionsVersion}" + implementation group: 'org.apache.commons', name: 'commons-collections4', version: "${commonscollections4Version}" + //implementation group: 'org.apache.commons', name: 'commons-csv', version: "${commonscsvVersion}" + implementation group: 'org.apache.commons', name: 'commons-text', version: "${commonstextVersion}" + implementation group: 'org.apache.commons', name: 'commons-dbcp2', version: "${commonsdbcp2Version}" + implementation group: 'commons-dbutils', name: 'commons-dbutils', version: "${commonsdbutilsVersion}" + implementation group: 'org.apache.commons', name: 'commons-digester3', version: "${commonsdigester3Version}" + implementation group: 'commons-digester', name: 'commons-digester', version: "${commonsdigesterVersion}" + implementation group: 'commons-io', name: 'commons-io', version: "${commonsioVersion}" + implementation group: 'commons-lang', name: 'commons-lang', version: "${commonslangVersion}" + implementation group: 'org.apache.commons', name: 'commons-lang3', version: "${commonslang3Version}" + implementation group: 'commons-logging', name: 'commons-logging', version: "${commonsloggingVersion}" + implementation group: 'org.apache.commons', name: 'commons-pool2', version: "${commonspool2Version}" + implementation group: 'commons-httpclient', name: 'commons-httpclient', version: "${commonshttpclientVersion}" + implementation group: 'commons-fileupload', name: 'commons-fileupload', version: "${commonsfileuploadVersion}" + implementation group: 'org.apache.commons', name: 'commons-email', version: "${commonsemailVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'fluent-hc', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpclient-cache', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpmime', version: "${httpcomponentsVersion}" - implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.13' - implementation group: 'org.apache.velocity', name: 'velocity', version: '1.7' - implementation group: 'velocity', name: 'velocity-dep', version: '1.4' - implementation group: 'org.freemarker', name: 'freemarker', version: '2.3.31' - implementation group: 'org.apache.xmlbeans', name: 'xmlbeans', version: '3.0.1' - implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.20' + implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: "${httpcoreVersion}" + implementation group: 'org.apache.velocity', name: 'velocity', version: "${velocityVersion}" + implementation group: 'velocity', name: 'velocity-dep', version: "${velocitydepVersion}" + implementation group: 'org.freemarker', name: 'freemarker', version: "${freemarkerVersion}" + implementation group: 'org.apache.xmlbeans', name: 'xmlbeans', version: "${xmlbeansVersion}" + implementation group: 'org.apache.commons', name: 'commons-compress', version: "${commonscompressVersion}" implementation group: 'org.apache.poi', name: 'poi', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-ooxml', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-scratchpad', version: "${poiVersion}" - //implementation group: 'org.apache.commons', name: 'not-yet-commons-ssl', version: '0.3.9' - - //logs + //implementation group: 'org.apache.commons', name: 'not-yet-commons-ssl', version: "${notyetcommonssslVersion}" + //tomcat embed Core Tomcat implementation + implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: "${tomcatVersion}" + //JULI logging implementation for embedded Tomcat + implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-logging-juli', version: "${tomcatembedloggingjuliVersion}" + //apache logs implementation group: 'org.apache.logging.log4j', name: 'log4j-1.2-api', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: "${log4jVersion}" @@ -168,8 +172,9 @@ subprojects { implementation group: 'org.apache.logging.log4j', name: 'log4j-jul', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-web', version: "${log4jVersion}" + //logs implementation group: 'org.slf4j', name: 'slf4j-api', version: "${slf4jVersion}" - implementation group: 'org.jboss.logging', name: 'jboss-logging', version: '3.4.1.Final' + implementation group: 'org.jboss.logging', name: 'jboss-logging', version: "${jbossloggingVersion}" //spring implementation group: 'org.springframework', name: 'spring-aop', version: "${springVersion}" implementation group: 'org.springframework', name: 'spring-aspects', version: "${springVersion}" @@ -195,11 +200,11 @@ subprojects { //kafka support // https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients - implementation group: 'org.apache.kafka', name: 'kafka-clients', version: '2.6.1' + implementation group: 'org.apache.kafka', name: 'kafka-clients', version: "${kafkaclientsVersion}" // https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka - implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: '2.6.6' + implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: "${springkafkaVersion}" // https://mvnrepository.com/artifact/org.springframework.retry/spring-retry - implementation group: 'org.springframework.retry', name: 'spring-retry', version: '1.3.0' + implementation group: 'org.springframework.retry', name: 'spring-retry', version: "${springretryVersion}" //spring-security implementation group: 'org.springframework.security', name: 'spring-security-core', version: "${springSecurityVersion}" @@ -226,102 +231,105 @@ subprojects { implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}" implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}" - implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: '2.0.0.RELEASE' - implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: '2.0.0.RELEASE' - + implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}" + implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}" //saml - implementation group: 'org.opensaml', name: 'opensaml', version: '2.6.6' - implementation group: 'org.opensaml', name: 'openws', version: '1.5.6' - implementation group: 'org.opensaml', name: 'xmltooling', version: '1.4.6' - implementation group: 'net.shibboleth.utilities', name: 'java-support', version: '7.5.1' - //jose-jwt - implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.4.1' - implementation group: 'net.jcip', name: 'jcip-annotations', version: '1.0' - implementation group: 'net.minidev', name: 'json-smart', version: '2.3' - implementation group: 'net.minidev', name: 'asm', version: '1.0.2' + implementation group: 'org.opensaml', name: 'opensaml', version: "${opensamlVersion}" + implementation group: 'org.opensaml', name: 'openws', version: "${openwsVersion}" + implementation group: 'org.opensaml', name: 'xmltooling', version: "${xmltoolingVersion}" + implementation group: 'net.shibboleth.utilities', name: 'java-support', version: "${javasupportVersion}" + //jose-jwt + implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: "${nimbusjosejwtVersion}" + implementation group: 'net.jcip', name: 'jcip-annotations', version: "${jcipannotationsVersion}" + implementation group: 'net.minidev', name: 'json-smart', version: "${minidevjsonsmartVersion}" + implementation group: 'net.minidev', name: 'asm', version: "${minidevasmVersion}" //oauth third party JustAuth - implementation group: 'com.xkcoding.http', name: 'simple-http', version: '1.0.3' - implementation group: 'me.zhyd.oauth', name: 'JustAuth', version: '1.15.9' + implementation group: 'com.xkcoding.http', name: 'simple-http', version: "${simplehttpVersion}" + implementation group: 'me.zhyd.oauth', name: 'JustAuth', version: "${JustAuthVersion}" //common - implementation group: 'org.javassist', name: 'javassist', version: '3.23.0-GA' - implementation group: 'org.owasp.esapi', name: 'esapi', version: '2.2.0.0' - implementation group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2' + implementation group: 'org.javassist', name: 'javassist', version: "${javassistVersion}" + implementation group: 'org.owasp.esapi', name: 'esapi', version: "${esapiVersion}" + implementation group: 'com.sun.mail', name: 'javax.mail', version: "${javaxmailVersion}" // https://mvnrepository.com/artifact/org.eclipse.persistence/javax.persistence // for mybatis-jpa-extra - implementation group: 'org.eclipse.persistence', name: 'javax.persistence', version: '2.2.1' - implementation group: 'javax.activation', name: 'activation', version: '1.1.1' - implementation group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2' - implementation group: 'javax.transaction', name: 'jta', version: '1.1' - implementation group: 'javax.transaction', name: 'javax.transaction-api', version: '1.3' - implementation group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final' - implementation group: 'javax.xml', name: 'jsr173', version: '1.0' - implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1' - implementation group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0.1' - implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.2' - implementation group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.3.2' + implementation group: 'org.eclipse.persistence', name: 'javax.persistence', version: "${javaxpersistenceVersion}" + implementation group: 'javax.activation', name: 'activation', version: "${activationVersion}" + implementation group: 'javax.annotation', name: 'javax.annotation-api', version: "${javaxannotationapiVersion}" + implementation group: 'javax.transaction', name: 'jta', version: "${jtaVersion}" + implementation group: 'javax.transaction', name: 'javax.transaction-api', version: "${javaxtransactionapiVersion}" + implementation group: 'javax.validation', name: 'validation-api', version: "${validationapiVersion}" + implementation group: 'javax.xml', name: 'jsr173', version: "${jsr173Version}" + implementation group: 'javax.xml.bind', name: 'jaxb-api', version: "${jaxbapiVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-core', version: "${jaxbcoreVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: "${jaxbimplVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: "${jaxbxjcVersion}" //crypto implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: "${bouncycastleVersion}" implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: "${bouncycastleVersion}" implementation group: 'org.bouncycastle', name: 'bcprov-ext-jdk15on', version: "${bouncycastleVersion}" - implementation group: 'com.google.crypto.tink', name: 'tink', version: '1.4.0' + //google + implementation group: 'com.google.crypto.tink', name: 'tink', version: "${tinkVersion}" //kaptcha - implementation group: 'com.jhlabs', name: 'filters', version: '2.0.235-1' - implementation group: 'com.github.penggle', name: 'kaptcha', version: '2.3.2' + implementation group: 'com.jhlabs', name: 'filters', version: "${jhlabsfiltersVersion}" + implementation group: 'com.github.penggle', name: 'kaptcha', version: "${kaptchaVersion}" + //json + implementation group: 'com.google.code.gson', name: 'gson', version: "${gsonVersion}" + //reactive + implementation group: 'org.reactivestreams', name: 'reactive-streams', version: "${reactivestreamsVersion}" + implementation group: 'io.projectreactor', name: 'reactor-core', version: "${reactorcoreVersion}" + implementation group: 'eu.tekul', name: 'szxcvbn_2.9.2', version: "${szxcvbnVersion}" + //quartz + implementation group: 'org.quartz-scheduler', name: 'quartz', version: "${quartzVersion}" + //database + implementation group: 'mysql', name: 'mysql-connector-java', version: "${mysqlconnectorjavaVersion}" + implementation group: 'com.alibaba', name: 'druid', version: "${druidVersion}" + implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: "${druidspringbootstarterVersion}" + implementation group: 'redis.clients', name: 'jedis', version: "${jedisVersion}" + implementation group: 'org.ehcache', name: 'ehcache', version: "${ehcacheVersion}" + //mybatis + implementation group: 'org.mybatis', name: 'mybatis', version: "${mybatisVersion}" + implementation group: 'org.mybatis', name: 'mybatis-spring', version: "${mybatisspringVersion}" + //hibernate + implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: "${hibernateVersion}" + implementation group: 'org.hibernate', name: 'hibernate-validator-cdi', version: "${hibernateVersion}" + implementation group: 'org.hibernate.validator', name: 'hibernate-validator-annotation-processor', version: "${hibernateVersion}" + //usefull + implementation group: 'joda-time', name: 'joda-time', version: "${jodatimeVersion}" + implementation group: 'org.yaml', name: 'snakeyaml', version: "${snakeyamlVersion}" + implementation group: 'net.sourceforge.nekohtml', name: 'nekohtml', version: "${nekohtmlVersion}" + implementation group: 'org.jdom', name: 'jdom', version: "${jdomVersion}" + implementation group: 'com.google.zxing', name: 'core', version: "${zxingcoreVersion}" + implementation group: 'com.google.guava', name: 'guava', version: "${guavaVersion}" + implementation group: 'ognl', name: 'ognl', version: "${ognlVersion}" + implementation group: 'cglib', name: 'cglib', version: "${cglibVersion}" + implementation group: 'org.ow2.asm', name: 'asm', version: "${asmVersion}" + implementation group: 'aopalliance', name: 'aopalliance', version: "${aopallianceVersion}" + implementation group: 'org.aspectj', name: 'aspectjtools', version: "${aspectjtoolsVersion}" + implementation group: 'dom4j', name: 'dom4j', version: "${dom4jVersion}" + implementation group: 'xalan', name: 'serializer', version: "${serializerVersion}" + implementation group: 'xml-resolver', name: 'xml-resolver', version: "${xmlresolverVersion}" + implementation group: 'org.apache.santuario', name: 'xmlsec', version: "${xmlsecVersion}" + implementation group: 'org.ogce', name: 'xpp3', version: "${xpp3Version}" + implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: "${xstreamVersion}" + implementation group: 'org.passay', name: 'passay', version: "${passayVersion}" + implementation group: 'io.micrometer', name: 'micrometer-core', version: "${micrometercoreVersion}" + implementation group: 'org.latencyutils', name: 'LatencyUtils', version: "${LatencyUtilsVersion}" + implementation group: 'org.codehaus.woodstox', name: 'stax2-api', version: "${stax2apiVersion}" + //阿里云 + implementation group: 'com.aliyun', name: 'aliyun-java-sdk-core', version: "${aliyunjavasdkcoreVersion}" + //腾讯云 + implementation group: 'com.tencentcloudapi', name: 'tencentcloud-sdk-java', version: "${tencentcloudsdkjavaVersion}" //json - implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6' implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: "${jacksonVersion}" - - implementation group: 'com.fasterxml', name: 'classmate', version: '1.5.0' - implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.74' - //reactive - implementation group: 'org.reactivestreams', name: 'reactive-streams', version: '1.0.2' - implementation group: 'io.projectreactor', name: 'reactor-core', version: '3.2.10.RELEASE' - implementation group: 'eu.tekul', name: 'szxcvbn_2.9.2', version: '0.2' - //quartz - implementation group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2' - //database - implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.21' - implementation group: 'com.alibaba', name: 'druid', version: '1.2.5' - implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: '1.2.5' - implementation group: 'redis.clients', name: 'jedis', version: '3.4.1' - implementation group: 'org.ehcache', name: 'ehcache', version: '3.9.0' - //mybatis - implementation group: 'org.mybatis', name: 'mybatis', version: '3.5.6' - implementation group: 'org.mybatis', name: 'mybatis-spring', version: '2.0.6' - //hibernate - implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: "${hibernateVersion}" - implementation group: 'org.hibernate', name: 'hibernate-validator-cdi', version: "${hibernateVersion}" - implementation group: 'org.hibernate.validator', name: 'hibernate-validator-annotation-processor', version: "${hibernateVersion}" - //usefull - implementation group: 'joda-time', name: 'joda-time', version: '2.10.9' - implementation group: 'org.yaml', name: 'snakeyaml', version: '1.26' - implementation group: 'net.sourceforge.nekohtml', name: 'nekohtml', version: '1.9.22' - implementation group: 'org.jdom', name: 'jdom', version: '2.0.2' - implementation group: 'com.google.zxing', name: 'core', version: '3.4.1' - implementation group: 'com.google.guava', name: 'guava', version: '30.1-jre' - implementation group: 'ognl', name: 'ognl', version: '3.2.14' - implementation group: 'cglib', name: 'cglib', version: '3.3.0' - implementation group: 'org.ow2.asm', name: 'asm', version: '7.3.1' - implementation group: 'aopalliance', name: 'aopalliance', version: '1.0' - implementation group: 'org.aspectj', name: 'aspectjtools', version: '1.9.4' - implementation group: 'dom4j', name: 'dom4j', version: '1.6.1' - implementation group: 'xalan', name: 'serializer', version: '2.7.2' - implementation group: 'xml-resolver', name: 'xml-resolver', version: '1.2' - implementation group: 'org.apache.santuario', name: 'xmlsec', version: '1.5.8' - implementation group: 'org.ogce', name: 'xpp3', version: '1.1.6' - implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.10' - implementation group: 'org.passay', name: 'passay', version: '1.6.0' - implementation group: 'io.micrometer', name: 'micrometer-core', version: '1.6.4' - implementation group: 'org.latencyutils', name: 'LatencyUtils', version: '2.0.3' - implementation group: 'org.codehaus.woodstox', name: 'stax2-api', version: '4.2.1' - + implementation group: 'com.fasterxml', name: 'classmate', version: "${classmateVersion}" + implementation group: 'com.alibaba', name: 'fastjson', version: "${fastjsonVersion}" //docs - implementation group: 'org.mapstruct', name: 'mapstruct', version: '1.4.1.Final' + implementation group: 'org.mapstruct', name: 'mapstruct', version: "${mapstructVersion}" implementation group: 'io.swagger', name: 'swagger-annotations', version: "${swaggerVersion}" implementation group: 'io.swagger', name: 'swagger-models', version: "${swaggerVersion}" implementation group: 'io.swagger.core.v3', name: 'swagger-annotations', version: "${swaggerV3Version}" @@ -350,18 +358,9 @@ subprojects { implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-ui', version: "${knife4jVersion}" implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-boot-starter', version: "${knife4jVersion}" implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-boot-autoconfigure', version: "${knife4jVersion}" - - //local jars + + //local jars implementation fileTree(dir: "${rootDir}/maxkey-lib/", include: '*.jar') - //阿里云 - implementation group: 'com.aliyun', name: 'aliyun-java-sdk-core', version: '4.5.1' - //腾讯云 - implementation group: 'com.tencentcloudapi', name: 'tencentcloud-sdk-java', version: '3.1.33' - - //tomcat embed Core Tomcat implementation - implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: "${tomcatVersion}" - //JULI logging implementation for embedded Tomcat - implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-logging-juli', version: '8.5.2' } jar { diff --git a/config/build_jar.gradle b/config/build_jar.gradle index 5a588ebeb..87724c9c1 100644 --- a/config/build_jar.gradle +++ b/config/build_jar.gradle @@ -121,46 +121,50 @@ subprojects { //all dependencies dependencies { //for Test and Compile - testImplementation 'junit:junit:4.11' - compileOnly 'junit:junit:4.11' - testImplementation group: 'org.mockito', name: 'mockito-all', version: '1.10.19' - testImplementation group: 'xmlunit', name: 'xmlunit', version: '1.6' + testImplementation group: 'junit', name: 'junit', version: "${junitVersion}" + compileOnly group: 'junit', name: 'junit', version: "${junitVersion}" + testImplementation group: 'org.mockito', name: 'mockito-all', version: "${mockitoallVersion}" + testImplementation group: 'xmlunit', name: 'xmlunit', version: "${xmlunitVersion}" + //apache - implementation group: 'commons-beanutils', name: 'commons-beanutils', version: '1.9.3' - implementation group: 'commons-codec', name: 'commons-codec', version: '1.15' - implementation group: 'commons-collections', name: 'commons-collections', version: '3.2.2' - implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' - //implementation group: 'org.apache.commons', name: 'commons-csv', version: '1.7' - implementation group: 'org.apache.commons', name: 'commons-text', version: '1.9' - implementation group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.6.0' - implementation group: 'commons-dbutils', name: 'commons-dbutils', version: '1.7' - implementation group: 'org.apache.commons', name: 'commons-digester3', version: '3.2' - implementation group: 'commons-digester', name: 'commons-digester', version: '2.1' - implementation group: 'commons-io', name: 'commons-io', version: '2.8.0' - implementation group: 'commons-lang', name: 'commons-lang', version: '2.6' - implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.11' - implementation group: 'commons-logging', name: 'commons-logging', version: '1.2' - implementation group: 'org.apache.commons', name: 'commons-pool2', version: '2.6.2' - implementation group: 'commons-httpclient', name: 'commons-httpclient', version: '3.1' - implementation group: 'commons-fileupload', name: 'commons-fileupload', version: '1.4' - implementation group: 'org.apache.commons', name: 'commons-email', version: '1.5' + implementation group: 'commons-beanutils', name: 'commons-beanutils', version: "${commonsbeanutilsVersion}" + implementation group: 'commons-codec', name: 'commons-codec', version: "${commonscodecVersion}" + implementation group: 'commons-collections', name: 'commons-collections', version: "${commonscollectionsVersion}" + implementation group: 'org.apache.commons', name: 'commons-collections4', version: "${commonscollections4Version}" + //implementation group: 'org.apache.commons', name: 'commons-csv', version: "${commonscsvVersion}" + implementation group: 'org.apache.commons', name: 'commons-text', version: "${commonstextVersion}" + implementation group: 'org.apache.commons', name: 'commons-dbcp2', version: "${commonsdbcp2Version}" + implementation group: 'commons-dbutils', name: 'commons-dbutils', version: "${commonsdbutilsVersion}" + implementation group: 'org.apache.commons', name: 'commons-digester3', version: "${commonsdigester3Version}" + implementation group: 'commons-digester', name: 'commons-digester', version: "${commonsdigesterVersion}" + implementation group: 'commons-io', name: 'commons-io', version: "${commonsioVersion}" + implementation group: 'commons-lang', name: 'commons-lang', version: "${commonslangVersion}" + implementation group: 'org.apache.commons', name: 'commons-lang3', version: "${commonslang3Version}" + implementation group: 'commons-logging', name: 'commons-logging', version: "${commonsloggingVersion}" + implementation group: 'org.apache.commons', name: 'commons-pool2', version: "${commonspool2Version}" + implementation group: 'commons-httpclient', name: 'commons-httpclient', version: "${commonshttpclientVersion}" + implementation group: 'commons-fileupload', name: 'commons-fileupload', version: "${commonsfileuploadVersion}" + implementation group: 'org.apache.commons', name: 'commons-email', version: "${commonsemailVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'fluent-hc', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpclient-cache', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpmime', version: "${httpcomponentsVersion}" - implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.13' - implementation group: 'org.apache.velocity', name: 'velocity', version: '1.7' - implementation group: 'velocity', name: 'velocity-dep', version: '1.4' - implementation group: 'org.freemarker', name: 'freemarker', version: '2.3.31' - implementation group: 'org.apache.xmlbeans', name: 'xmlbeans', version: '3.0.1' - implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.20' + implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: "${httpcoreVersion}" + implementation group: 'org.apache.velocity', name: 'velocity', version: "${velocityVersion}" + implementation group: 'velocity', name: 'velocity-dep', version: "${velocitydepVersion}" + implementation group: 'org.freemarker', name: 'freemarker', version: "${freemarkerVersion}" + implementation group: 'org.apache.xmlbeans', name: 'xmlbeans', version: "${xmlbeansVersion}" + implementation group: 'org.apache.commons', name: 'commons-compress', version: "${commonscompressVersion}" implementation group: 'org.apache.poi', name: 'poi', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-ooxml', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-scratchpad', version: "${poiVersion}" - //implementation group: 'org.apache.commons', name: 'not-yet-commons-ssl', version: '0.3.9' - - //logs + //implementation group: 'org.apache.commons', name: 'not-yet-commons-ssl', version: "${notyetcommonssslVersion}" + //tomcat embed Core Tomcat implementation + implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: "${tomcatVersion}" + //JULI logging implementation for embedded Tomcat + implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-logging-juli', version: "${tomcatembedloggingjuliVersion}" + //apache logs implementation group: 'org.apache.logging.log4j', name: 'log4j-1.2-api', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: "${log4jVersion}" @@ -168,8 +172,9 @@ subprojects { implementation group: 'org.apache.logging.log4j', name: 'log4j-jul', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-web', version: "${log4jVersion}" + //logs implementation group: 'org.slf4j', name: 'slf4j-api', version: "${slf4jVersion}" - implementation group: 'org.jboss.logging', name: 'jboss-logging', version: '3.4.1.Final' + implementation group: 'org.jboss.logging', name: 'jboss-logging', version: "${jbossloggingVersion}" //spring implementation group: 'org.springframework', name: 'spring-aop', version: "${springVersion}" implementation group: 'org.springframework', name: 'spring-aspects', version: "${springVersion}" @@ -195,11 +200,11 @@ subprojects { //kafka support // https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients - implementation group: 'org.apache.kafka', name: 'kafka-clients', version: '2.6.1' + implementation group: 'org.apache.kafka', name: 'kafka-clients', version: "${kafkaclientsVersion}" // https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka - implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: '2.6.6' + implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: "${springkafkaVersion}" // https://mvnrepository.com/artifact/org.springframework.retry/spring-retry - implementation group: 'org.springframework.retry', name: 'spring-retry', version: '1.3.0' + implementation group: 'org.springframework.retry', name: 'spring-retry', version: "${springretryVersion}" //spring-security implementation group: 'org.springframework.security', name: 'spring-security-core', version: "${springSecurityVersion}" @@ -226,102 +231,105 @@ subprojects { implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}" implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}" - implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: '2.0.0.RELEASE' - implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: '2.0.0.RELEASE' - + implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}" + implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}" //saml - implementation group: 'org.opensaml', name: 'opensaml', version: '2.6.6' - implementation group: 'org.opensaml', name: 'openws', version: '1.5.6' - implementation group: 'org.opensaml', name: 'xmltooling', version: '1.4.6' - implementation group: 'net.shibboleth.utilities', name: 'java-support', version: '7.5.1' - //jose-jwt - implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.4.1' - implementation group: 'net.jcip', name: 'jcip-annotations', version: '1.0' - implementation group: 'net.minidev', name: 'json-smart', version: '2.3' - implementation group: 'net.minidev', name: 'asm', version: '1.0.2' + implementation group: 'org.opensaml', name: 'opensaml', version: "${opensamlVersion}" + implementation group: 'org.opensaml', name: 'openws', version: "${openwsVersion}" + implementation group: 'org.opensaml', name: 'xmltooling', version: "${xmltoolingVersion}" + implementation group: 'net.shibboleth.utilities', name: 'java-support', version: "${javasupportVersion}" + //jose-jwt + implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: "${nimbusjosejwtVersion}" + implementation group: 'net.jcip', name: 'jcip-annotations', version: "${jcipannotationsVersion}" + implementation group: 'net.minidev', name: 'json-smart', version: "${minidevjsonsmartVersion}" + implementation group: 'net.minidev', name: 'asm', version: "${minidevasmVersion}" //oauth third party JustAuth - implementation group: 'com.xkcoding.http', name: 'simple-http', version: '1.0.3' - implementation group: 'me.zhyd.oauth', name: 'JustAuth', version: '1.15.9' + implementation group: 'com.xkcoding.http', name: 'simple-http', version: "${simplehttpVersion}" + implementation group: 'me.zhyd.oauth', name: 'JustAuth', version: "${JustAuthVersion}" //common - implementation group: 'org.javassist', name: 'javassist', version: '3.23.0-GA' - implementation group: 'org.owasp.esapi', name: 'esapi', version: '2.2.0.0' - implementation group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2' + implementation group: 'org.javassist', name: 'javassist', version: "${javassistVersion}" + implementation group: 'org.owasp.esapi', name: 'esapi', version: "${esapiVersion}" + implementation group: 'com.sun.mail', name: 'javax.mail', version: "${javaxmailVersion}" // https://mvnrepository.com/artifact/org.eclipse.persistence/javax.persistence // for mybatis-jpa-extra - implementation group: 'org.eclipse.persistence', name: 'javax.persistence', version: '2.2.1' - implementation group: 'javax.activation', name: 'activation', version: '1.1.1' - implementation group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2' - implementation group: 'javax.transaction', name: 'jta', version: '1.1' - implementation group: 'javax.transaction', name: 'javax.transaction-api', version: '1.3' - implementation group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final' - implementation group: 'javax.xml', name: 'jsr173', version: '1.0' - implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1' - implementation group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0.1' - implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.2' - implementation group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.3.2' + implementation group: 'org.eclipse.persistence', name: 'javax.persistence', version: "${javaxpersistenceVersion}" + implementation group: 'javax.activation', name: 'activation', version: "${activationVersion}" + implementation group: 'javax.annotation', name: 'javax.annotation-api', version: "${javaxannotationapiVersion}" + implementation group: 'javax.transaction', name: 'jta', version: "${jtaVersion}" + implementation group: 'javax.transaction', name: 'javax.transaction-api', version: "${javaxtransactionapiVersion}" + implementation group: 'javax.validation', name: 'validation-api', version: "${validationapiVersion}" + implementation group: 'javax.xml', name: 'jsr173', version: "${jsr173Version}" + implementation group: 'javax.xml.bind', name: 'jaxb-api', version: "${jaxbapiVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-core', version: "${jaxbcoreVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: "${jaxbimplVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: "${jaxbxjcVersion}" //crypto implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: "${bouncycastleVersion}" implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: "${bouncycastleVersion}" implementation group: 'org.bouncycastle', name: 'bcprov-ext-jdk15on', version: "${bouncycastleVersion}" - implementation group: 'com.google.crypto.tink', name: 'tink', version: '1.4.0' + //google + implementation group: 'com.google.crypto.tink', name: 'tink', version: "${tinkVersion}" //kaptcha - implementation group: 'com.jhlabs', name: 'filters', version: '2.0.235-1' - implementation group: 'com.github.penggle', name: 'kaptcha', version: '2.3.2' + implementation group: 'com.jhlabs', name: 'filters', version: "${jhlabsfiltersVersion}" + implementation group: 'com.github.penggle', name: 'kaptcha', version: "${kaptchaVersion}" + //json + implementation group: 'com.google.code.gson', name: 'gson', version: "${gsonVersion}" + //reactive + implementation group: 'org.reactivestreams', name: 'reactive-streams', version: "${reactivestreamsVersion}" + implementation group: 'io.projectreactor', name: 'reactor-core', version: "${reactorcoreVersion}" + implementation group: 'eu.tekul', name: 'szxcvbn_2.9.2', version: "${szxcvbnVersion}" + //quartz + implementation group: 'org.quartz-scheduler', name: 'quartz', version: "${quartzVersion}" + //database + implementation group: 'mysql', name: 'mysql-connector-java', version: "${mysqlconnectorjavaVersion}" + implementation group: 'com.alibaba', name: 'druid', version: "${druidVersion}" + implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: "${druidspringbootstarterVersion}" + implementation group: 'redis.clients', name: 'jedis', version: "${jedisVersion}" + implementation group: 'org.ehcache', name: 'ehcache', version: "${ehcacheVersion}" + //mybatis + implementation group: 'org.mybatis', name: 'mybatis', version: "${mybatisVersion}" + implementation group: 'org.mybatis', name: 'mybatis-spring', version: "${mybatisspringVersion}" + //hibernate + implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: "${hibernateVersion}" + implementation group: 'org.hibernate', name: 'hibernate-validator-cdi', version: "${hibernateVersion}" + implementation group: 'org.hibernate.validator', name: 'hibernate-validator-annotation-processor', version: "${hibernateVersion}" + //usefull + implementation group: 'joda-time', name: 'joda-time', version: "${jodatimeVersion}" + implementation group: 'org.yaml', name: 'snakeyaml', version: "${snakeyamlVersion}" + implementation group: 'net.sourceforge.nekohtml', name: 'nekohtml', version: "${nekohtmlVersion}" + implementation group: 'org.jdom', name: 'jdom', version: "${jdomVersion}" + implementation group: 'com.google.zxing', name: 'core', version: "${zxingcoreVersion}" + implementation group: 'com.google.guava', name: 'guava', version: "${guavaVersion}" + implementation group: 'ognl', name: 'ognl', version: "${ognlVersion}" + implementation group: 'cglib', name: 'cglib', version: "${cglibVersion}" + implementation group: 'org.ow2.asm', name: 'asm', version: "${asmVersion}" + implementation group: 'aopalliance', name: 'aopalliance', version: "${aopallianceVersion}" + implementation group: 'org.aspectj', name: 'aspectjtools', version: "${aspectjtoolsVersion}" + implementation group: 'dom4j', name: 'dom4j', version: "${dom4jVersion}" + implementation group: 'xalan', name: 'serializer', version: "${serializerVersion}" + implementation group: 'xml-resolver', name: 'xml-resolver', version: "${xmlresolverVersion}" + implementation group: 'org.apache.santuario', name: 'xmlsec', version: "${xmlsecVersion}" + implementation group: 'org.ogce', name: 'xpp3', version: "${xpp3Version}" + implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: "${xstreamVersion}" + implementation group: 'org.passay', name: 'passay', version: "${passayVersion}" + implementation group: 'io.micrometer', name: 'micrometer-core', version: "${micrometercoreVersion}" + implementation group: 'org.latencyutils', name: 'LatencyUtils', version: "${LatencyUtilsVersion}" + implementation group: 'org.codehaus.woodstox', name: 'stax2-api', version: "${stax2apiVersion}" + //阿里云 + implementation group: 'com.aliyun', name: 'aliyun-java-sdk-core', version: "${aliyunjavasdkcoreVersion}" + //腾讯云 + implementation group: 'com.tencentcloudapi', name: 'tencentcloud-sdk-java', version: "${tencentcloudsdkjavaVersion}" //json - implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6' implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: "${jacksonVersion}" - - implementation group: 'com.fasterxml', name: 'classmate', version: '1.5.0' - implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.74' - //reactive - implementation group: 'org.reactivestreams', name: 'reactive-streams', version: '1.0.2' - implementation group: 'io.projectreactor', name: 'reactor-core', version: '3.2.10.RELEASE' - implementation group: 'eu.tekul', name: 'szxcvbn_2.9.2', version: '0.2' - //quartz - implementation group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2' - //database - implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.21' - implementation group: 'com.alibaba', name: 'druid', version: '1.2.5' - implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: '1.2.5' - implementation group: 'redis.clients', name: 'jedis', version: '3.4.1' - implementation group: 'org.ehcache', name: 'ehcache', version: '3.9.0' - //mybatis - implementation group: 'org.mybatis', name: 'mybatis', version: '3.5.6' - implementation group: 'org.mybatis', name: 'mybatis-spring', version: '2.0.6' - //hibernate - implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: "${hibernateVersion}" - implementation group: 'org.hibernate', name: 'hibernate-validator-cdi', version: "${hibernateVersion}" - implementation group: 'org.hibernate.validator', name: 'hibernate-validator-annotation-processor', version: "${hibernateVersion}" - //usefull - implementation group: 'joda-time', name: 'joda-time', version: '2.10.9' - implementation group: 'org.yaml', name: 'snakeyaml', version: '1.26' - implementation group: 'net.sourceforge.nekohtml', name: 'nekohtml', version: '1.9.22' - implementation group: 'org.jdom', name: 'jdom', version: '2.0.2' - implementation group: 'com.google.zxing', name: 'core', version: '3.4.1' - implementation group: 'com.google.guava', name: 'guava', version: '30.1-jre' - implementation group: 'ognl', name: 'ognl', version: '3.2.14' - implementation group: 'cglib', name: 'cglib', version: '3.3.0' - implementation group: 'org.ow2.asm', name: 'asm', version: '7.3.1' - implementation group: 'aopalliance', name: 'aopalliance', version: '1.0' - implementation group: 'org.aspectj', name: 'aspectjtools', version: '1.9.4' - implementation group: 'dom4j', name: 'dom4j', version: '1.6.1' - implementation group: 'xalan', name: 'serializer', version: '2.7.2' - implementation group: 'xml-resolver', name: 'xml-resolver', version: '1.2' - implementation group: 'org.apache.santuario', name: 'xmlsec', version: '1.5.8' - implementation group: 'org.ogce', name: 'xpp3', version: '1.1.6' - implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.10' - implementation group: 'org.passay', name: 'passay', version: '1.6.0' - implementation group: 'io.micrometer', name: 'micrometer-core', version: '1.6.4' - implementation group: 'org.latencyutils', name: 'LatencyUtils', version: '2.0.3' - implementation group: 'org.codehaus.woodstox', name: 'stax2-api', version: '4.2.1' - + implementation group: 'com.fasterxml', name: 'classmate', version: "${classmateVersion}" + implementation group: 'com.alibaba', name: 'fastjson', version: "${fastjsonVersion}" //docs - implementation group: 'org.mapstruct', name: 'mapstruct', version: '1.4.1.Final' + implementation group: 'org.mapstruct', name: 'mapstruct', version: "${mapstructVersion}" implementation group: 'io.swagger', name: 'swagger-annotations', version: "${swaggerVersion}" implementation group: 'io.swagger', name: 'swagger-models', version: "${swaggerVersion}" implementation group: 'io.swagger.core.v3', name: 'swagger-annotations', version: "${swaggerV3Version}" @@ -350,18 +358,9 @@ subprojects { implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-ui', version: "${knife4jVersion}" implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-boot-starter', version: "${knife4jVersion}" implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-boot-autoconfigure', version: "${knife4jVersion}" - - //local jars + + //local jars implementation fileTree(dir: "${rootDir}/maxkey-lib/", include: '*.jar') - //阿里云 - implementation group: 'com.aliyun', name: 'aliyun-java-sdk-core', version: '4.5.1' - //腾讯云 - implementation group: 'com.tencentcloudapi', name: 'tencentcloud-sdk-java', version: '3.1.33' - - //tomcat embed Core Tomcat implementation - implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: "${tomcatVersion}" - //JULI logging implementation for embedded Tomcat - implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-logging-juli', version: '8.5.2' } jar { diff --git a/config/build_standard.gradle b/config/build_standard.gradle index 08b4cea41..6d8ea169d 100644 --- a/config/build_standard.gradle +++ b/config/build_standard.gradle @@ -122,46 +122,50 @@ subprojects { //all dependencies dependencies { //for Test and Compile - testImplementation 'junit:junit:4.11' - compileOnly 'junit:junit:4.11' - testImplementation group: 'org.mockito', name: 'mockito-all', version: '1.10.19' - testImplementation group: 'xmlunit', name: 'xmlunit', version: '1.6' + testImplementation group: 'junit', name: 'junit', version: "${junitVersion}" + compileOnly group: 'junit', name: 'junit', version: "${junitVersion}" + testImplementation group: 'org.mockito', name: 'mockito-all', version: "${mockitoallVersion}" + testImplementation group: 'xmlunit', name: 'xmlunit', version: "${xmlunitVersion}" + //apache - implementation group: 'commons-beanutils', name: 'commons-beanutils', version: '1.9.3' - implementation group: 'commons-codec', name: 'commons-codec', version: '1.15' - implementation group: 'commons-collections', name: 'commons-collections', version: '3.2.2' - implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' - //implementation group: 'org.apache.commons', name: 'commons-csv', version: '1.7' - implementation group: 'org.apache.commons', name: 'commons-text', version: '1.9' - implementation group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.6.0' - implementation group: 'commons-dbutils', name: 'commons-dbutils', version: '1.7' - implementation group: 'org.apache.commons', name: 'commons-digester3', version: '3.2' - implementation group: 'commons-digester', name: 'commons-digester', version: '2.1' - implementation group: 'commons-io', name: 'commons-io', version: '2.8.0' - implementation group: 'commons-lang', name: 'commons-lang', version: '2.6' - implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.11' - implementation group: 'commons-logging', name: 'commons-logging', version: '1.2' - implementation group: 'org.apache.commons', name: 'commons-pool2', version: '2.6.2' - implementation group: 'commons-httpclient', name: 'commons-httpclient', version: '3.1' - implementation group: 'commons-fileupload', name: 'commons-fileupload', version: '1.4' - implementation group: 'org.apache.commons', name: 'commons-email', version: '1.5' + implementation group: 'commons-beanutils', name: 'commons-beanutils', version: "${commonsbeanutilsVersion}" + implementation group: 'commons-codec', name: 'commons-codec', version: "${commonscodecVersion}" + implementation group: 'commons-collections', name: 'commons-collections', version: "${commonscollectionsVersion}" + implementation group: 'org.apache.commons', name: 'commons-collections4', version: "${commonscollections4Version}" + //implementation group: 'org.apache.commons', name: 'commons-csv', version: "${commonscsvVersion}" + implementation group: 'org.apache.commons', name: 'commons-text', version: "${commonstextVersion}" + implementation group: 'org.apache.commons', name: 'commons-dbcp2', version: "${commonsdbcp2Version}" + implementation group: 'commons-dbutils', name: 'commons-dbutils', version: "${commonsdbutilsVersion}" + implementation group: 'org.apache.commons', name: 'commons-digester3', version: "${commonsdigester3Version}" + implementation group: 'commons-digester', name: 'commons-digester', version: "${commonsdigesterVersion}" + implementation group: 'commons-io', name: 'commons-io', version: "${commonsioVersion}" + implementation group: 'commons-lang', name: 'commons-lang', version: "${commonslangVersion}" + implementation group: 'org.apache.commons', name: 'commons-lang3', version: "${commonslang3Version}" + implementation group: 'commons-logging', name: 'commons-logging', version: "${commonsloggingVersion}" + implementation group: 'org.apache.commons', name: 'commons-pool2', version: "${commonspool2Version}" + implementation group: 'commons-httpclient', name: 'commons-httpclient', version: "${commonshttpclientVersion}" + implementation group: 'commons-fileupload', name: 'commons-fileupload', version: "${commonsfileuploadVersion}" + implementation group: 'org.apache.commons', name: 'commons-email', version: "${commonsemailVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'fluent-hc', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpclient-cache', version: "${httpcomponentsVersion}" implementation group: 'org.apache.httpcomponents', name: 'httpmime', version: "${httpcomponentsVersion}" - implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.13' - implementation group: 'org.apache.velocity', name: 'velocity', version: '1.7' - implementation group: 'velocity', name: 'velocity-dep', version: '1.4' - implementation group: 'org.freemarker', name: 'freemarker', version: '2.3.31' - implementation group: 'org.apache.xmlbeans', name: 'xmlbeans', version: '3.0.1' - implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.20' + implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: "${httpcoreVersion}" + implementation group: 'org.apache.velocity', name: 'velocity', version: "${velocityVersion}" + implementation group: 'velocity', name: 'velocity-dep', version: "${velocitydepVersion}" + implementation group: 'org.freemarker', name: 'freemarker', version: "${freemarkerVersion}" + implementation group: 'org.apache.xmlbeans', name: 'xmlbeans', version: "${xmlbeansVersion}" + implementation group: 'org.apache.commons', name: 'commons-compress', version: "${commonscompressVersion}" implementation group: 'org.apache.poi', name: 'poi', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-ooxml', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: "${poiVersion}" implementation group: 'org.apache.poi', name: 'poi-scratchpad', version: "${poiVersion}" - //implementation group: 'org.apache.commons', name: 'not-yet-commons-ssl', version: '0.3.9' - - //logs + //implementation group: 'org.apache.commons', name: 'not-yet-commons-ssl', version: "${notyetcommonssslVersion}" + //tomcat embed Core Tomcat implementation + implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: "${tomcatVersion}" + //JULI logging implementation for embedded Tomcat + implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-logging-juli', version: "${tomcatembedloggingjuliVersion}" + //apache logs implementation group: 'org.apache.logging.log4j', name: 'log4j-1.2-api', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: "${log4jVersion}" @@ -169,8 +173,9 @@ subprojects { implementation group: 'org.apache.logging.log4j', name: 'log4j-jul', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: "${log4jVersion}" implementation group: 'org.apache.logging.log4j', name: 'log4j-web', version: "${log4jVersion}" + //logs implementation group: 'org.slf4j', name: 'slf4j-api', version: "${slf4jVersion}" - implementation group: 'org.jboss.logging', name: 'jboss-logging', version: '3.4.1.Final' + implementation group: 'org.jboss.logging', name: 'jboss-logging', version: "${jbossloggingVersion}" //spring implementation group: 'org.springframework', name: 'spring-aop', version: "${springVersion}" implementation group: 'org.springframework', name: 'spring-aspects', version: "${springVersion}" @@ -196,11 +201,11 @@ subprojects { //kafka support // https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients - implementation group: 'org.apache.kafka', name: 'kafka-clients', version: '2.6.1' + implementation group: 'org.apache.kafka', name: 'kafka-clients', version: "${kafkaclientsVersion}" // https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka - implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: '2.6.6' + implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: "${springkafkaVersion}" // https://mvnrepository.com/artifact/org.springframework.retry/spring-retry - implementation group: 'org.springframework.retry', name: 'spring-retry', version: '1.3.0' + implementation group: 'org.springframework.retry', name: 'spring-retry', version: "${springretryVersion}" //spring-security implementation group: 'org.springframework.security', name: 'spring-security-core', version: "${springSecurityVersion}" @@ -227,102 +232,105 @@ subprojects { implementation group: 'org.springframework.session', name: 'spring-session-core', version: "${springSessionVersion}" implementation group: 'org.springframework.session', name: 'spring-session-data-redis', version: "${springSessionVersion}" - implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: '2.0.0.RELEASE' - implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: '2.0.0.RELEASE' - + implementation group: 'org.springframework.plugin', name: 'spring-plugin-core', version: "${springplugincoreVersion}" + implementation group: 'org.springframework.plugin', name: 'spring-plugin-metadata', version: "${springpluginmetadataVersion}" //saml - implementation group: 'org.opensaml', name: 'opensaml', version: '2.6.6' - implementation group: 'org.opensaml', name: 'openws', version: '1.5.6' - implementation group: 'org.opensaml', name: 'xmltooling', version: '1.4.6' - implementation group: 'net.shibboleth.utilities', name: 'java-support', version: '7.5.1' - //jose-jwt - implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.4.1' - implementation group: 'net.jcip', name: 'jcip-annotations', version: '1.0' - implementation group: 'net.minidev', name: 'json-smart', version: '2.3' - implementation group: 'net.minidev', name: 'asm', version: '1.0.2' + implementation group: 'org.opensaml', name: 'opensaml', version: "${opensamlVersion}" + implementation group: 'org.opensaml', name: 'openws', version: "${openwsVersion}" + implementation group: 'org.opensaml', name: 'xmltooling', version: "${xmltoolingVersion}" + implementation group: 'net.shibboleth.utilities', name: 'java-support', version: "${javasupportVersion}" + //jose-jwt + implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: "${nimbusjosejwtVersion}" + implementation group: 'net.jcip', name: 'jcip-annotations', version: "${jcipannotationsVersion}" + implementation group: 'net.minidev', name: 'json-smart', version: "${minidevjsonsmartVersion}" + implementation group: 'net.minidev', name: 'asm', version: "${minidevasmVersion}" //oauth third party JustAuth - implementation group: 'com.xkcoding.http', name: 'simple-http', version: '1.0.3' - implementation group: 'me.zhyd.oauth', name: 'JustAuth', version: '1.15.9' + implementation group: 'com.xkcoding.http', name: 'simple-http', version: "${simplehttpVersion}" + implementation group: 'me.zhyd.oauth', name: 'JustAuth', version: "${JustAuthVersion}" //common - implementation group: 'org.javassist', name: 'javassist', version: '3.23.0-GA' - implementation group: 'org.owasp.esapi', name: 'esapi', version: '2.2.0.0' - implementation group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2' + implementation group: 'org.javassist', name: 'javassist', version: "${javassistVersion}" + implementation group: 'org.owasp.esapi', name: 'esapi', version: "${esapiVersion}" + implementation group: 'com.sun.mail', name: 'javax.mail', version: "${javaxmailVersion}" // https://mvnrepository.com/artifact/org.eclipse.persistence/javax.persistence // for mybatis-jpa-extra - implementation group: 'org.eclipse.persistence', name: 'javax.persistence', version: '2.2.1' - implementation group: 'javax.activation', name: 'activation', version: '1.1.1' - implementation group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2' - implementation group: 'javax.transaction', name: 'jta', version: '1.1' - implementation group: 'javax.transaction', name: 'javax.transaction-api', version: '1.3' - implementation group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final' - implementation group: 'javax.xml', name: 'jsr173', version: '1.0' - implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1' - implementation group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0.1' - implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.2' - implementation group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.3.2' + implementation group: 'org.eclipse.persistence', name: 'javax.persistence', version: "${javaxpersistenceVersion}" + implementation group: 'javax.activation', name: 'activation', version: "${activationVersion}" + implementation group: 'javax.annotation', name: 'javax.annotation-api', version: "${javaxannotationapiVersion}" + implementation group: 'javax.transaction', name: 'jta', version: "${jtaVersion}" + implementation group: 'javax.transaction', name: 'javax.transaction-api', version: "${javaxtransactionapiVersion}" + implementation group: 'javax.validation', name: 'validation-api', version: "${validationapiVersion}" + implementation group: 'javax.xml', name: 'jsr173', version: "${jsr173Version}" + implementation group: 'javax.xml.bind', name: 'jaxb-api', version: "${jaxbapiVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-core', version: "${jaxbcoreVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: "${jaxbimplVersion}" + implementation group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: "${jaxbxjcVersion}" //crypto implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: "${bouncycastleVersion}" implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: "${bouncycastleVersion}" implementation group: 'org.bouncycastle', name: 'bcprov-ext-jdk15on', version: "${bouncycastleVersion}" - implementation group: 'com.google.crypto.tink', name: 'tink', version: '1.4.0' + //google + implementation group: 'com.google.crypto.tink', name: 'tink', version: "${tinkVersion}" //kaptcha - implementation group: 'com.jhlabs', name: 'filters', version: '2.0.235-1' - implementation group: 'com.github.penggle', name: 'kaptcha', version: '2.3.2' + implementation group: 'com.jhlabs', name: 'filters', version: "${jhlabsfiltersVersion}" + implementation group: 'com.github.penggle', name: 'kaptcha', version: "${kaptchaVersion}" + //json + implementation group: 'com.google.code.gson', name: 'gson', version: "${gsonVersion}" + //reactive + implementation group: 'org.reactivestreams', name: 'reactive-streams', version: "${reactivestreamsVersion}" + implementation group: 'io.projectreactor', name: 'reactor-core', version: "${reactorcoreVersion}" + implementation group: 'eu.tekul', name: 'szxcvbn_2.9.2', version: "${szxcvbnVersion}" + //quartz + implementation group: 'org.quartz-scheduler', name: 'quartz', version: "${quartzVersion}" + //database + implementation group: 'mysql', name: 'mysql-connector-java', version: "${mysqlconnectorjavaVersion}" + implementation group: 'com.alibaba', name: 'druid', version: "${druidVersion}" + implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: "${druidspringbootstarterVersion}" + implementation group: 'redis.clients', name: 'jedis', version: "${jedisVersion}" + implementation group: 'org.ehcache', name: 'ehcache', version: "${ehcacheVersion}" + //mybatis + implementation group: 'org.mybatis', name: 'mybatis', version: "${mybatisVersion}" + implementation group: 'org.mybatis', name: 'mybatis-spring', version: "${mybatisspringVersion}" + //hibernate + implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: "${hibernateVersion}" + implementation group: 'org.hibernate', name: 'hibernate-validator-cdi', version: "${hibernateVersion}" + implementation group: 'org.hibernate.validator', name: 'hibernate-validator-annotation-processor', version: "${hibernateVersion}" + //usefull + implementation group: 'joda-time', name: 'joda-time', version: "${jodatimeVersion}" + implementation group: 'org.yaml', name: 'snakeyaml', version: "${snakeyamlVersion}" + implementation group: 'net.sourceforge.nekohtml', name: 'nekohtml', version: "${nekohtmlVersion}" + implementation group: 'org.jdom', name: 'jdom', version: "${jdomVersion}" + implementation group: 'com.google.zxing', name: 'core', version: "${zxingcoreVersion}" + implementation group: 'com.google.guava', name: 'guava', version: "${guavaVersion}" + implementation group: 'ognl', name: 'ognl', version: "${ognlVersion}" + implementation group: 'cglib', name: 'cglib', version: "${cglibVersion}" + implementation group: 'org.ow2.asm', name: 'asm', version: "${asmVersion}" + implementation group: 'aopalliance', name: 'aopalliance', version: "${aopallianceVersion}" + implementation group: 'org.aspectj', name: 'aspectjtools', version: "${aspectjtoolsVersion}" + implementation group: 'dom4j', name: 'dom4j', version: "${dom4jVersion}" + implementation group: 'xalan', name: 'serializer', version: "${serializerVersion}" + implementation group: 'xml-resolver', name: 'xml-resolver', version: "${xmlresolverVersion}" + implementation group: 'org.apache.santuario', name: 'xmlsec', version: "${xmlsecVersion}" + implementation group: 'org.ogce', name: 'xpp3', version: "${xpp3Version}" + implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: "${xstreamVersion}" + implementation group: 'org.passay', name: 'passay', version: "${passayVersion}" + implementation group: 'io.micrometer', name: 'micrometer-core', version: "${micrometercoreVersion}" + implementation group: 'org.latencyutils', name: 'LatencyUtils', version: "${LatencyUtilsVersion}" + implementation group: 'org.codehaus.woodstox', name: 'stax2-api', version: "${stax2apiVersion}" + //阿里云 + implementation group: 'com.aliyun', name: 'aliyun-java-sdk-core', version: "${aliyunjavasdkcoreVersion}" + //腾讯云 + implementation group: 'com.tencentcloudapi', name: 'tencentcloud-sdk-java', version: "${tencentcloudsdkjavaVersion}" //json - implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.6' implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: "${jacksonVersion}" implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: "${jacksonVersion}" - - implementation group: 'com.fasterxml', name: 'classmate', version: '1.5.0' - implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.74' - //reactive - implementation group: 'org.reactivestreams', name: 'reactive-streams', version: '1.0.2' - implementation group: 'io.projectreactor', name: 'reactor-core', version: '3.2.10.RELEASE' - implementation group: 'eu.tekul', name: 'szxcvbn_2.9.2', version: '0.2' - //quartz - implementation group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2' - //database - implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.21' - implementation group: 'com.alibaba', name: 'druid', version: '1.2.5' - implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: '1.2.5' - implementation group: 'redis.clients', name: 'jedis', version: '3.4.1' - implementation group: 'org.ehcache', name: 'ehcache', version: '3.9.0' - //mybatis - implementation group: 'org.mybatis', name: 'mybatis', version: '3.5.6' - implementation group: 'org.mybatis', name: 'mybatis-spring', version: '2.0.6' - //hibernate - implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: "${hibernateVersion}" - implementation group: 'org.hibernate', name: 'hibernate-validator-cdi', version: "${hibernateVersion}" - implementation group: 'org.hibernate.validator', name: 'hibernate-validator-annotation-processor', version: "${hibernateVersion}" - //usefull - implementation group: 'joda-time', name: 'joda-time', version: '2.10.9' - implementation group: 'org.yaml', name: 'snakeyaml', version: '1.26' - implementation group: 'net.sourceforge.nekohtml', name: 'nekohtml', version: '1.9.22' - implementation group: 'org.jdom', name: 'jdom', version: '2.0.2' - implementation group: 'com.google.zxing', name: 'core', version: '3.4.1' - implementation group: 'com.google.guava', name: 'guava', version: '30.1-jre' - implementation group: 'ognl', name: 'ognl', version: '3.2.14' - implementation group: 'cglib', name: 'cglib', version: '3.3.0' - implementation group: 'org.ow2.asm', name: 'asm', version: '7.3.1' - implementation group: 'aopalliance', name: 'aopalliance', version: '1.0' - implementation group: 'org.aspectj', name: 'aspectjtools', version: '1.9.4' - implementation group: 'dom4j', name: 'dom4j', version: '1.6.1' - implementation group: 'xalan', name: 'serializer', version: '2.7.2' - implementation group: 'xml-resolver', name: 'xml-resolver', version: '1.2' - implementation group: 'org.apache.santuario', name: 'xmlsec', version: '1.5.8' - implementation group: 'org.ogce', name: 'xpp3', version: '1.1.6' - implementation group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.4.10' - implementation group: 'org.passay', name: 'passay', version: '1.6.0' - implementation group: 'io.micrometer', name: 'micrometer-core', version: '1.6.4' - implementation group: 'org.latencyutils', name: 'LatencyUtils', version: '2.0.3' - implementation group: 'org.codehaus.woodstox', name: 'stax2-api', version: '4.2.1' - + implementation group: 'com.fasterxml', name: 'classmate', version: "${classmateVersion}" + implementation group: 'com.alibaba', name: 'fastjson', version: "${fastjsonVersion}" //docs - implementation group: 'org.mapstruct', name: 'mapstruct', version: '1.4.1.Final' + implementation group: 'org.mapstruct', name: 'mapstruct', version: "${mapstructVersion}" implementation group: 'io.swagger', name: 'swagger-annotations', version: "${swaggerVersion}" implementation group: 'io.swagger', name: 'swagger-models', version: "${swaggerVersion}" implementation group: 'io.swagger.core.v3', name: 'swagger-annotations', version: "${swaggerV3Version}" @@ -351,18 +359,9 @@ subprojects { implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-ui', version: "${knife4jVersion}" implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-boot-starter', version: "${knife4jVersion}" implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-boot-autoconfigure', version: "${knife4jVersion}" - - //local jars + + //local jars implementation fileTree(dir: "${rootDir}/maxkey-lib/", include: '*.jar') - //阿里云 - implementation group: 'com.aliyun', name: 'aliyun-java-sdk-core', version: '4.5.1' - //腾讯云 - implementation group: 'com.tencentcloudapi', name: 'tencentcloud-sdk-java', version: '3.1.33' - - //tomcat embed Core Tomcat implementation - implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: "${tomcatVersion}" - //JULI logging implementation for embedded Tomcat - implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-logging-juli', version: '8.5.2' } jar { diff --git a/gradle.properties b/gradle.properties index 4df282f85..e7ba5ed7f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,25 +1,133 @@ -#maxkey properties +#gradle properties for maxkey group =maxkey.top -version =2.7.0 +version =2.8.0 vendor =https://www.maxkey.top -author =maxkeyTop - +author =MaxKeyTop #Version For use jar +#Apache +commonsbeanutilsVersion=1.9.3 +commonscodecVersion=1.15 +commonscollectionsVersion=3.2.2 +commonscollections4Version=4.4 +commonscsvVersion=1.7 +commonstextVersion=1.9 +commonsdbcp2Version=2.6.0 +commonsdbutilsVersion=1.7 +commonsdigester3Version=3.2 +commonsdigesterVersion=2.1 +commonsioVersion=2.8.0 +commonslangVersion=2.6 +commonslang3Version=3.11 +commonsloggingVersion=1.2 +commonspool2Version=2.6.2 +commonshttpclientVersion=3.1 +commonsfileuploadVersion=1.4 +commonsemailVersion=1.5 +httpcoreVersion=4.4.13 +velocityVersion=1.7 +velocitydepVersion=1.4 +freemarkerVersion=2.3.31 +xmlbeansVersion=3.0.1 +commonscompressVersion=1.20 log4jVersion =2.14.1 +kafkaclientsVersion=2.6.1 +httpcomponentsVersion =4.5.12 +poiVersion =4.1.2 +tomcatVersion =9.0.44 +tomcatembedloggingjuliVersion=8.5.2 +#spring springVersion =5.3.6 springBootVersion =2.4.5 springSecurityVersion =5.4.6 springDataVersion =2.4.1 springSessionVersion =2.4.1 +springkafkaVersion=2.6.6 +springretryVersion=1.3.0 +springplugincoreVersion=2.0.0.RELEASE +springpluginmetadataVersion=2.0.0.RELEASE +springfoxVersion =3.0.0 +#google +jibGradlePluginVersion =2.7.0 +kaptchaVersion=2.3.2 +gsonVersion=2.8.6 +guavaVersion=30.1.1-jre +tinkVersion=1.4.0 +zxingcoreVersion=3.4.1 +#jboss +jbossloggingVersion=3.4.1.Final hibernateVersion =6.2.0.Final +#doc +swaggerVersion =1.6.2 +swaggerV3Version =2.1.6 +knife4jVersion =3.0.2 +#database +mysqlconnectorjavaVersion=8.0.21 +druidVersion=1.2.5 +druidspringbootstarterVersion=1.2.5 +jedisVersion=3.4.1 +ehcacheVersion=3.9.0 +mybatisVersion=3.5.6 +mybatisspringVersion=2.0.6 +#saml +opensamlVersion=2.6.6 +openwsVersion=1.5.6 +xmltoolingVersion=1.4.6 +javasupportVersion=7.5.1 +#others +jhlabsfiltersVersion=2.0.235-1 slf4jVersion =1.7.30 jacksonVersion =2.12.1 bouncycastleVersion =1.64 -httpcomponentsVersion =4.5.12 -poiVersion =4.1.2 -jibGradlePluginVersion =2.7.0 -swaggerVersion =1.6.2 -swaggerV3Version =2.1.6 -springfoxVersion =3.0.0 -knife4jVersion =3.0.2 -tomcatVersion =9.0.44 \ No newline at end of file +junitVersion=4.11 +mockitoallVersion=1.10.19 +xmlunitVersion=1.6 +nimbusjosejwtVersion=9.4.1 +jcipannotationsVersion=1.0 +minidevjsonsmartVersion=2.3 +minidevasmVersion=1.0.2 +simplehttpVersion=1.0.3 +JustAuthVersion=1.15.9 +javassistVersion=3.23.0-GA +esapiVersion=2.2.0.0 +javaxmailVersion=1.6.2 +javaxpersistenceVersion=2.2.1 +activationVersion=1.1.1 +javaxannotationapiVersion=1.3.2 +jtaVersion=1.1 +javaxtransactionapiVersion=1.3 +validationapiVersion=2.0.1.Final +jsr173Version=1.0 +jaxbapiVersion=2.3.1 +jaxbcoreVersion=2.3.0.1 +jaxbimplVersion=2.3.2 +jaxbxjcVersion=2.3.2 +classmateVersion=1.5.0 +fastjsonVersion=1.2.74 +reactivestreamsVersion=1.0.2 +reactorcoreVersion=3.2.10.RELEASE +szxcvbnVersion=0.2 +quartzVersion=2.3.2 +jodatimeVersion=2.10.9 +snakeyamlVersion=1.26 +nekohtmlVersion=1.9.22 +ognlVersion=3.2.14 +cglibVersion=3.3.0 +asmVersion=7.3.1 +aopallianceVersion=1.0 +aspectjtoolsVersion=1.9.4 +#xml +jdomVersion=2.0.2 +dom4jVersion=1.6.1 +serializerVersion=2.7.2 +xmlresolverVersion=1.2 +xmlsecVersion=1.5.8 +xpp3Version=1.1.6 +xstreamVersion=1.4.10 +passayVersion=1.6.0 +micrometercoreVersion=1.6.4 +LatencyUtilsVersion=2.0.3 +stax2apiVersion=4.2.1 +mapstructVersion=1.4.1.Final +#sdk +aliyunjavasdkcoreVersion=4.5.1 +tencentcloudsdkjavaVersion=3.1.33 diff --git a/maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/service/SocialsAssociate.java b/maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/service/SocialsAssociate.java index a77c5981e..8303ae8e8 100644 --- a/maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/service/SocialsAssociate.java +++ b/maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/service/SocialsAssociate.java @@ -17,13 +17,13 @@ package org.maxkey.authn.support.socialsignon.service; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; /** * * @author Crystal.Sea */ -public class SocialsAssociate extends JpaBaseDomain { +public class SocialsAssociate extends JpaBaseEntity { /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/Accounts.java b/maxkey-core/src/main/java/org/maxkey/entity/Accounts.java index a78b297e5..6cb3883c4 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/Accounts.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/Accounts.java @@ -24,7 +24,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; import org.hibernate.validator.constraints.Length; /* @@ -38,7 +38,7 @@ import org.hibernate.validator.constraints.Length; */ @Entity @Table(name = "MXK_ACCOUNTS") -public class Accounts extends JpaBaseDomain implements Serializable { +public class Accounts extends JpaBaseEntity implements Serializable { private static final long serialVersionUID = 6829592256223630307L; @Id @Column diff --git a/maxkey-core/src/main/java/org/maxkey/entity/ChangePassword.java b/maxkey-core/src/main/java/org/maxkey/entity/ChangePassword.java index 54f3a244f..faf49abc1 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/ChangePassword.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/ChangePassword.java @@ -17,9 +17,9 @@ package org.maxkey.entity; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; -public class ChangePassword extends JpaBaseDomain{ +public class ChangePassword extends JpaBaseEntity{ /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/ExcelImport.java b/maxkey-core/src/main/java/org/maxkey/entity/ExcelImport.java index 16f891525..f7f825267 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/ExcelImport.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/ExcelImport.java @@ -22,7 +22,7 @@ import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; import org.springframework.web.multipart.MultipartFile; /** @@ -30,7 +30,7 @@ import org.springframework.web.multipart.MultipartFile; * @author Crystal.Sea * */ -public class ExcelImport extends JpaBaseDomain { +public class ExcelImport extends JpaBaseEntity { /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/Groups.java b/maxkey-core/src/main/java/org/maxkey/entity/Groups.java index 236e8a453..b34f2a6ee 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/Groups.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/Groups.java @@ -24,11 +24,11 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; import org.hibernate.validator.constraints.Length; @Entity @Table(name = "MXK_GROUPS") -public class Groups extends JpaBaseDomain implements Serializable { +public class Groups extends JpaBaseEntity implements Serializable { private static final long serialVersionUID = 4660258495864814777L; @Id diff --git a/maxkey-core/src/main/java/org/maxkey/entity/HistoryLogin.java b/maxkey-core/src/main/java/org/maxkey/entity/HistoryLogin.java index e1900e23b..685e62b6a 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/HistoryLogin.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/HistoryLogin.java @@ -26,7 +26,7 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; /** @@ -35,7 +35,7 @@ import org.apache.mybatis.jpa.persistence.JpaBaseDomain; */ @Entity @Table(name = "MXK_HISTORY_LOGIN") -public class HistoryLogin extends JpaBaseDomain implements Serializable{ +public class HistoryLogin extends JpaBaseEntity implements Serializable{ /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/HistoryLoginApps.java b/maxkey-core/src/main/java/org/maxkey/entity/HistoryLoginApps.java index 49104b923..39b43fdac 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/HistoryLoginApps.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/HistoryLoginApps.java @@ -24,7 +24,7 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; /** * @author Crystal.Sea @@ -32,7 +32,7 @@ import org.apache.mybatis.jpa.persistence.JpaBaseDomain; */ @Entity @Table(name = "MXK_HISTORY_LOGIN_APPS") -public class HistoryLoginApps extends JpaBaseDomain { +public class HistoryLoginApps extends JpaBaseEntity { private static final long serialVersionUID = 5085201575292304749L; @Id diff --git a/maxkey-core/src/main/java/org/maxkey/entity/HistoryLogs.java b/maxkey-core/src/main/java/org/maxkey/entity/HistoryLogs.java index 6d146a152..5c76098a1 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/HistoryLogs.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/HistoryLogs.java @@ -24,7 +24,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; /** * . @@ -33,7 +33,7 @@ import org.apache.mybatis.jpa.persistence.JpaBaseDomain; */ @Entity @Table(name = "MXK_HISTORY_LOGS") -public class HistoryLogs extends JpaBaseDomain implements Serializable { +public class HistoryLogs extends JpaBaseEntity implements Serializable { private static final long serialVersionUID = 6560201093784960493L; @Id @Column diff --git a/maxkey-core/src/main/java/org/maxkey/entity/Navigations.java b/maxkey-core/src/main/java/org/maxkey/entity/Navigations.java index fd3beeaa0..70d0c345f 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/Navigations.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/Navigations.java @@ -22,7 +22,7 @@ package org.maxkey.entity; import java.util.ArrayList; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; @@ -31,7 +31,7 @@ import org.apache.mybatis.jpa.persistence.JpaBaseDomain; * @author Crystal.Sea * */ -public class Navigations extends JpaBaseDomain implements java.io.Serializable { +public class Navigations extends JpaBaseEntity implements java.io.Serializable { /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/Notices.java b/maxkey-core/src/main/java/org/maxkey/entity/Notices.java index 5bf6e10c3..15c52b10a 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/Notices.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/Notices.java @@ -26,11 +26,11 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; @Entity @Table(name = "MXK_NOTICES") -public class Notices extends JpaBaseDomain implements Serializable { +public class Notices extends JpaBaseEntity implements Serializable { /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/Organizations.java b/maxkey-core/src/main/java/org/maxkey/entity/Organizations.java index 0f4b5e60d..ff60bcbd7 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/Organizations.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/Organizations.java @@ -24,10 +24,10 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; @Entity @Table(name = "MXK_ORGANIZATIONS") -public class Organizations extends JpaBaseDomain implements Serializable { +public class Organizations extends JpaBaseEntity implements Serializable { private static final long serialVersionUID = 5085413816404119803L; diff --git a/maxkey-core/src/main/java/org/maxkey/entity/PasswordPolicy.java b/maxkey-core/src/main/java/org/maxkey/entity/PasswordPolicy.java index 86104833f..32bdab87c 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/PasswordPolicy.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/PasswordPolicy.java @@ -24,7 +24,7 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.validation.constraints.NotNull; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; import org.maxkey.constants.ConstantsServiceMessage; import org.maxkey.exception.PasswordPolicyException; @@ -35,7 +35,7 @@ import org.maxkey.exception.PasswordPolicyException; @Entity @Table(name = "MXK_PASSWORD_POLICY") -public class PasswordPolicy extends JpaBaseDomain implements java.io.Serializable { +public class PasswordPolicy extends JpaBaseEntity implements java.io.Serializable { private static final long serialVersionUID = -4797776994287829182L; @Id diff --git a/maxkey-core/src/main/java/org/maxkey/entity/Registration.java b/maxkey-core/src/main/java/org/maxkey/entity/Registration.java index 791b3a721..75eb3ceaa 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/Registration.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/Registration.java @@ -17,9 +17,9 @@ package org.maxkey.entity; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; -public class Registration extends JpaBaseDomain{ +public class Registration extends JpaBaseEntity{ /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/Resources.java b/maxkey-core/src/main/java/org/maxkey/entity/Resources.java index 55692b291..1159a6b28 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/Resources.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/Resources.java @@ -24,11 +24,11 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; @Entity @Table(name = "MXK_RESOURCES") -public class Resources extends JpaBaseDomain implements Serializable { +public class Resources extends JpaBaseEntity implements Serializable { private static final long serialVersionUID = 2567171742999638608L; @Id @Column diff --git a/maxkey-core/src/main/java/org/maxkey/entity/RolePermissions.java b/maxkey-core/src/main/java/org/maxkey/entity/RolePermissions.java index 51620b052..8a392d8c6 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/RolePermissions.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/RolePermissions.java @@ -24,13 +24,13 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; import org.maxkey.constants.ConstantsStatus; import org.maxkey.web.WebContext; @Entity @Table(name = "MXK_ROLE_PERMISSIONS") -public class RolePermissions extends JpaBaseDomain implements Serializable { +public class RolePermissions extends JpaBaseEntity implements Serializable { private static final long serialVersionUID = -8783585691243853899L; @Id diff --git a/maxkey-core/src/main/java/org/maxkey/entity/Roles.java b/maxkey-core/src/main/java/org/maxkey/entity/Roles.java index d9e21364d..5fb8befb5 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/Roles.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/Roles.java @@ -24,11 +24,11 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; @Entity @Table(name = "MXK_ROLES") -public class Roles extends JpaBaseDomain implements Serializable { +public class Roles extends JpaBaseEntity implements Serializable { private static final long serialVersionUID = -7515832728504943821L; @Id diff --git a/maxkey-core/src/main/java/org/maxkey/entity/Saml20Metadata.java b/maxkey-core/src/main/java/org/maxkey/entity/Saml20Metadata.java index e02b7d108..26d00a875 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/Saml20Metadata.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/Saml20Metadata.java @@ -18,14 +18,14 @@ package org.maxkey.entity; import java.io.Serializable; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; /** * Saml20Metadata. * @author Crystal.Sea * */ -public class Saml20Metadata extends JpaBaseDomain implements Serializable { +public class Saml20Metadata extends JpaBaseEntity implements Serializable { private static final long serialVersionUID = -403743150268165622L; public static final class ContactPersonType { diff --git a/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java b/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java index 8269add3a..3a0d256b5 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/UserInfo.java @@ -26,7 +26,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; import org.maxkey.util.StringUtils; import org.springframework.web.multipart.MultipartFile; @@ -38,7 +38,7 @@ import org.springframework.web.multipart.MultipartFile; @Entity @Table(name = "MXK_USERINFO") -public class UserInfo extends JpaBaseDomain { +public class UserInfo extends JpaBaseEntity { private static final long serialVersionUID = 6402443942083382236L; // @Id diff --git a/maxkey-core/src/main/java/org/maxkey/entity/UserInfoAdjoint.java b/maxkey-core/src/main/java/org/maxkey/entity/UserInfoAdjoint.java index 09fbe5ee5..40ac589e0 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/UserInfoAdjoint.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/UserInfoAdjoint.java @@ -24,11 +24,11 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; @Entity @Table(name = "MXK_USERINFO_ADJUNCT") -public class UserInfoAdjoint extends JpaBaseDomain { +public class UserInfoAdjoint extends JpaBaseEntity { /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java b/maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java index 17456d848..c48838999 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/apps/Apps.java @@ -27,14 +27,14 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; import org.maxkey.constants.Boolean; import org.maxkey.entity.Accounts; import org.springframework.web.multipart.MultipartFile; @Entity @Table(name = "MXK_APPS") -public class Apps extends JpaBaseDomain implements Serializable { +public class Apps extends JpaBaseEntity implements Serializable { /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsAdapters.java b/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsAdapters.java index afb593135..a7448578d 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsAdapters.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/apps/AppsAdapters.java @@ -24,11 +24,11 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; @Entity @Table(name = "MXK_APPS_ADAPTERS") -public class AppsAdapters extends JpaBaseDomain implements Serializable { +public class AppsAdapters extends JpaBaseEntity implements Serializable { /** * diff --git a/maxkey-core/src/main/java/org/maxkey/entity/xml/UserInfoXML.java b/maxkey-core/src/main/java/org/maxkey/entity/xml/UserInfoXML.java index 0c2ee9257..3421c8487 100644 --- a/maxkey-core/src/main/java/org/maxkey/entity/xml/UserInfoXML.java +++ b/maxkey-core/src/main/java/org/maxkey/entity/xml/UserInfoXML.java @@ -19,7 +19,8 @@ package org.maxkey.entity.xml; import javax.xml.bind.annotation.XmlRootElement; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; /** * xml can not include array , MultipartFile @@ -27,7 +28,7 @@ import org.apache.mybatis.jpa.persistence.JpaBaseDomain; * */ @XmlRootElement -public class UserInfoXML extends JpaBaseDomain { +public class UserInfoXML extends JpaBaseEntity { /** * diff --git a/maxkey-core/src/main/java/org/maxkey/web/BasicController.java b/maxkey-core/src/main/java/org/maxkey/web/BasicController.java index 2183d64f5..bb1448548 100644 --- a/maxkey-core/src/main/java/org/maxkey/web/BasicController.java +++ b/maxkey-core/src/main/java/org/maxkey/web/BasicController.java @@ -17,14 +17,14 @@ package org.maxkey.web; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; import org.apache.mybatis.jpa.persistence.JpaPageResults; import org.maxkey.web.message.Message; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.servlet.ModelAndView; -public interface BasicController { +public interface BasicController { public JpaPageResults pageResults(@ModelAttribute("modelAttribute") T modelAttribute); diff --git a/maxkey-lib/mybatis-jpa-extra-2.3.jar b/maxkey-lib/mybatis-jpa-extra-2.3.jar index 3601745e3be06d18532d39c30729ebb335fabb70..7d7ec20c4a7ebf2d779ec2393141f256319233fa 100644 GIT binary patch delta 69691 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 YQA%&V}Ib{b8 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 #2YpBsoUbjr6zM{Zw=xHi!|mX2<# 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 cZVU9sR7x<>#K9nfA%cHq)$ delta 14364 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 AH~;_u diff --git a/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/ReportMapper.java b/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/ReportMapper.java index 19ab6061f..1fd9b2fe3 100644 --- a/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/ReportMapper.java +++ b/maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/ReportMapper.java @@ -24,14 +24,14 @@ import java.util.List; import java.util.Map; import org.apache.mybatis.jpa.persistence.IJpaBaseMapper; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; /** * @author Crystal.sea * */ -public interface ReportMapper extends IJpaBaseMapper { +public interface ReportMapper extends IJpaBaseMapper { public Integer analysisDay(String reportParameter); public Integer analysisNewUsers(String reportParameter); diff --git a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/OrganizationsService.java b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/OrganizationsService.java index eb0e45015..07aeae735 100644 --- a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/OrganizationsService.java +++ b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/OrganizationsService.java @@ -45,6 +45,7 @@ import org.springframework.web.multipart.MultipartFile; import com.google.common.collect.Lists; + @Repository public class OrganizationsService extends JpaBaseService{ diff --git a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/ReportService.java b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/ReportService.java index ec7cbb9c8..86086d2ee 100644 --- a/maxkey-persistence/src/main/java/org/maxkey/persistence/service/ReportService.java +++ b/maxkey-persistence/src/main/java/org/maxkey/persistence/service/ReportService.java @@ -20,13 +20,13 @@ package org.maxkey.persistence.service; import java.util.List; import java.util.Map; -import org.apache.mybatis.jpa.persistence.JpaBaseDomain; +import org.apache.mybatis.jpa.persistence.JpaBaseEntity; import org.apache.mybatis.jpa.persistence.JpaBaseService; import org.maxkey.persistence.mapper.ReportMapper; import org.springframework.stereotype.Repository; @Repository -public class ReportService extends JpaBaseService{ +public class ReportService extends JpaBaseService{ public Integer analysisDay(String reportParameter) { return getMapper().analysisDay(reportParameter); diff --git a/maxkey-web-manage/src/main/resources/application.properties b/maxkey-web-manage/src/main/resources/application.properties index 98d6f95af..dce199afb 100644 --- a/maxkey-web-manage/src/main/resources/application.properties +++ b/maxkey-web-manage/src/main/resources/application.properties @@ -17,7 +17,7 @@ ############################################################################ application.title=MaxKey application.name=MaxKey-Mgt -application.formatted-version=v2.7.0 GA +application.formatted-version=v2.8.0 GA ############################################################################ #MaxKey Server configuration # @@ -42,8 +42,9 @@ spring.datasource.url=jdbc:mysql://localhost/maxkey?autoReconnect=true&character spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #mybatis +mybatis.dialect=mysql mybatis.type-aliases-package=org.maxkey.entity,org.maxkey.entity.apps, -mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/mysql/*.xml +mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/${mybatis.dialect}/*.xml mybatis.table-column-snowflake-datacenter-id=1 mybatis.table-column-snowflake-machine-id=1 mybatis.table-column-escape=true diff --git a/maxkey-web-manage/src/main/resources/maxkey.properties b/maxkey-web-manage/src/main/resources/maxkey.properties deleted file mode 100644 index 544c3e9ab..000000000 --- a/maxkey-web-manage/src/main/resources/maxkey.properties +++ /dev/null @@ -1,2 +0,0 @@ -############################################################################ -# MaxKey Management diff --git a/maxkey-web-maxkey/src/main/resources/application-http.properties b/maxkey-web-maxkey/src/main/resources/application-http.properties index 85e5b9f4b..edb31fbcf 100644 --- a/maxkey-web-maxkey/src/main/resources/application-http.properties +++ b/maxkey-web-maxkey/src/main/resources/application-http.properties @@ -47,8 +47,9 @@ spring.datasource.url=jdbc:mysql://localhost/maxkey?autoReconnect=true&character spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #mybatis +mybatis.dialect=mysql mybatis.type-aliases-package=org.maxkey.entity,org.maxkey.entity.apps, -mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/mysql/*.xml +mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/${mybatis.dialect}/*.xml mybatis.table-column-snowflake-datacenter-id=1 mybatis.table-column-snowflake-machine-id=1 mybatis.table-column-escape=true diff --git a/maxkey-web-maxkey/src/main/resources/application-https.properties b/maxkey-web-maxkey/src/main/resources/application-https.properties index 0174495bd..9783cac41 100644 --- a/maxkey-web-maxkey/src/main/resources/application-https.properties +++ b/maxkey-web-maxkey/src/main/resources/application-https.properties @@ -47,8 +47,9 @@ spring.datasource.url=jdbc:mysql://localhost/maxkey?autoReconnect=true&character spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #mybatis +mybatis.dialect=mysql mybatis.type-aliases-package=org.maxkey.entity,org.maxkey.entity.apps, -mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/mysql/*.xml +mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/${mybatis.dialect}/*.xml mybatis.table-column-snowflake-datacenter-id=1 mybatis.table-column-snowflake-machine-id=1 mybatis.table-column-escape=true diff --git a/maxkey-web-maxkey/src/main/resources/application.properties b/maxkey-web-maxkey/src/main/resources/application.properties index 51749d255..e1c683107 100644 --- a/maxkey-web-maxkey/src/main/resources/application.properties +++ b/maxkey-web-maxkey/src/main/resources/application.properties @@ -17,7 +17,7 @@ ############################################################################ application.title=MaxKey application.name=MaxKey -application.formatted-version=v2.7.0 GA +application.formatted-version=v2.8.0 GA ############################################################################ #spring.profiles.active https/http; default https #