From 9796818b6b8773e4676a77b079e74efd5dd57f49 Mon Sep 17 00:00:00 2001 From: Danying Shao Date: Tue, 28 Jan 2025 08:10:58 -0500 Subject: [PATCH 1/3] Grails 6 --- pegr/build.gradle | 108 ++++--- pegr/gradle.properties | 15 +- pegr/gradle/wrapper/gradle-wrapper.jar | Bin 55741 -> 61624 bytes pegr/gradle/wrapper/gradle-wrapper.properties | 3 +- pegr/gradlew | 292 +++++++++++------- pegr/gradlew.bat | 56 ++-- pegr/grails-app/conf/application.yml | 6 +- pegr/grails-app/conf/logback.groovy | 36 --- pegr/grails-app/conf/logback.xml | 19 ++ 9 files changed, 298 insertions(+), 237 deletions(-) delete mode 100644 pegr/grails-app/conf/logback.groovy create mode 100644 pegr/grails-app/conf/logback.xml diff --git a/pegr/build.gradle b/pegr/build.gradle index f7ba3dfd..9b1bfe0d 100644 --- a/pegr/build.gradle +++ b/pegr/build.gradle @@ -6,7 +6,7 @@ buildscript { dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" classpath "org.grails.plugins:hibernate5:${gormVersion-".RELEASE"}" - classpath "com.bertramlabs.plugins:asset-pipeline-gradle:3.0.10" + classpath "com.bertramlabs.plugins:asset-pipeline-gradle:4.3.0" classpath 'org.grails.plugins:database-migration:3.1.0.RC1' classpath "gradle.plugin.com.energizedwork.webdriver-binaries:webdriver-binaries-gradle-plugin:$webdriverBinariesVersion" classpath 'org.grails.plugins:quartz:2.0.13' @@ -46,64 +46,61 @@ configurations { dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") - compile "org.springframework.boot:spring-boot-starter-logging" - compile "org.springframework.boot:spring-boot-autoconfigure" - compile "org.grails:grails-core" - compile "org.springframework.boot:spring-boot-starter-actuator" - compile "org.springframework.boot:spring-boot-starter-tomcat" - compile "org.grails:grails-web-boot" - compile "org.grails:grails-logging" - compile "org.grails:grails-plugin-rest" - compile "org.grails:grails-plugin-databinding" - compile "org.grails:grails-plugin-i18n" - compile "org.grails:grails-plugin-services" - compile "org.grails:grails-plugin-url-mappings" - compile "org.grails:grails-plugin-interceptors" - compile "org.grails.plugins:cache" - compile "org.grails.plugins:async" - compile "org.grails.plugins:scaffolding" - compile "org.grails.plugins:events" - compile "org.grails.plugins:hibernate5" - compile "org.hibernate:hibernate-core:5.4.0.Final" - runtime "org.hibernate:hibernate-ehcache:5.4.6.Final" - compile "org.grails.plugins:gsp" + implementation "org.springframework.boot:spring-boot-starter-logging" + implementation "org.springframework.boot:spring-boot-autoconfigure" + implementation "org.grails:grails-core" + implementation "org.springframework.boot:spring-boot-starter-actuator" + implementation "org.springframework.boot:spring-boot-starter-tomcat" + implementation "org.grails:grails-web-boot" + implementation "org.grails:grails-logging" + implementation "org.grails:grails-plugin-rest" + implementation "org.grails:grails-plugin-databinding" + implementation "org.grails:grails-plugin-i18n" + implementation "org.grails:grails-plugin-services" + implementation "org.grails:grails-plugin-url-mappings" + implementation "org.grails:grails-plugin-interceptors" + implementation "org.grails.plugins:cache" + implementation "org.grails.plugins:async" + implementation "org.grails.plugins:scaffolding" + implementation "org.grails.plugins:events" + implementation "org.grails.plugins:hibernate5" + implementation "org.hibernate:hibernate-core:5.4.0.Final" + implementation "org.hibernate:hibernate-ehcache" + implementation "org.grails.plugins:gsp" console "org.grails:grails-console" profile "org.grails.profiles:web" - runtime "org.glassfish.web:el-impl:2.1.2-b03" - runtime "com.h2database:h2" - runtime "org.apache.tomcat:tomcat-jdbc" - runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.0.10" - testCompile "org.grails:grails-gorm-testing-support" - testCompile "org.grails.plugins:geb" - testCompile "org.grails:grails-web-testing-support" - testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:2.47.1" - runtime 'mysql:mysql-connector-java:5.1.29' - compile 'org.grails.plugins:database-migration:3.1.0.RC1' - compile 'org.grails.plugins:spring-security-core:4.0.3' - compile 'org.grails.plugins:quartz:2.0.13' - compile 'org.quartz-scheduler:quartz:2.2.1' - compile "org.grails.plugins:mail:3.0.0" - compile 'org.grails.plugins:external-config:2.0.0' - compile 'org.grails.plugins:excel-export:2.1' - compile fileTree(dir: 'libs', include: '*.jar') - compile 'org.liquibase:liquibase-core:3.6.3' - testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion" - testRuntime "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion" - testRuntime "org.seleniumhq.selenium:selenium-safari-driver:$seleniumSafariDriverVersion" - testCompile "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion" - testCompile "org.seleniumhq.selenium:selenium-api:$seleniumVersion" - testCompile "org.seleniumhq.selenium:selenium-support:$seleniumVersion" - compile 'com.github.jai-imageio:jai-imageio-core:1.4.0' - compile 'org.apache.poi:poi:5.2.3' - compile 'org.apache.poi:poi-ooxml:5.2.3' - compile 'org.apache.poi:poi-ooxml-full:5.2.3' - compile 'javax.annotation:javax.annotation-api:1.3.2' - compile 'org.apache.logging.log4j:log4j-to-slf4j:2.19.0' - compile 'org.apache.logging.log4j:log4j-api:2.19.0' + runtimeOnly "org.glassfish.web:el-impl:2.1.2-b03" + runtimeOnly "com.h2database:h2" + runtimeOnly "org.apache.tomcat:tomcat-jdbc" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:4.3.0" + testImplementation "org.grails:grails-gorm-testing-support" + testImplementation "org.grails.plugins:geb" + testImplementation "org.grails:grails-web-testing-support" + runtimeOnly 'mysql:mysql-connector-java:5.1.29' + implementation 'org.grails.plugins:database-migration:3.1.0.RC1' + implementation 'org.grails.plugins:spring-security-core:6.1.2' + implementation 'org.grails.plugins:quartz:2.0.13' + implementation 'org.quartz-scheduler:quartz:2.2.1' + implementation "org.grails.plugins:mail:3.0.0" + implementation 'org.grails.plugins:external-config:2.0.0' + implementation 'org.grails.plugins:excel-export:2.1' + implementation fileTree(dir: 'libs', include: '*.jar') + implementation 'org.liquibase:liquibase-core:3.6.3' + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion" + testRuntimeOnly "org.seleniumhq.selenium:selenium-safari-driver:$seleniumSafariDriverVersion" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-api:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-support:$seleniumVersion" + implementation 'com.github.jai-imageio:jai-imageio-core:1.4.0' + implementation 'org.apache.poi:poi:5.2.3' + implementation 'org.apache.poi:poi-ooxml:5.2.3' + implementation 'org.apache.poi:poi-ooxml-full:5.2.3' + implementation 'javax.annotation:javax.annotation-api:1.3.2' + implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.19.0' + implementation 'org.apache.logging.log4j:log4j-api:2.19.0' } webdriverBinaries { - chromedriver "$chromeDriverVersion" geckodriver "$geckodriverVersion" } @@ -117,7 +114,6 @@ bootRun { tasks.withType(Test) { systemProperty "geb.env", System.getProperty('geb.env') systemProperty "geb.build.reportsDir", reporting.file("geb/integrationTest") - systemProperty "webdriver.chrome.driver", System.getProperty('webdriver.chrome.driver') systemProperty "webdriver.gecko.driver", System.getProperty('webdriver.gecko.driver') } @@ -127,5 +123,5 @@ assets { } springBoot { - mainClassName = 'pegr.Application' + mainClass = 'pegr.Application' } \ No newline at end of file diff --git a/pegr/gradle.properties b/pegr/gradle.properties index 6215371d..df631d21 100644 --- a/pegr/gradle.properties +++ b/pegr/gradle.properties @@ -1,11 +1,12 @@ -grailsVersion=4.0.11 -gormVersion=7.0.2 -gradleWrapperVersion=5.0 -seleniumVersion=3.12.0 +groovyVersion=3.0.21 +grailsVersion=6.2.3 +grailsGradlePluginVersion=6.2.4 +gormVersion=8.0.0 +seleniumVersion=4.12.0 webdriverBinariesVersion=1.4 -chromeDriverVersion=2.44 -geckodriverVersion=0.23.0 +geckodriverVersion=0.33.0 seleniumSafariDriverVersion=3.14.0 +org.gradle.caching=true org.gradle.daemon=true org.gradle.parallel=true -org.gradle.jvmargs=-Xmx1024M \ No newline at end of file +org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M \ No newline at end of file diff --git a/pegr/gradle/wrapper/gradle-wrapper.jar b/pegr/gradle/wrapper/gradle-wrapper.jar index 457aad0d98108420a977756b7145c93c8910b076..afba109285af78dbd2a1d187e33ac4f87c76e392 100644 GIT binary patch delta 45626 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

KFa+Y~XUGglc@HxNMkphR21vt|8Mb+IQyDl`;TB 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 diff --git a/pegr/gradle/wrapper/gradle-wrapper.properties b/pegr/gradle/wrapper/gradle-wrapper.properties index 75b8c7c8..4e86b927 100644 --- a/pegr/gradle/wrapper/gradle-wrapper.properties +++ b/pegr/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/pegr/gradlew b/pegr/gradlew index af6708ff..65dcd68d 100755 --- a/pegr/gradlew +++ b/pegr/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/pegr/gradlew.bat b/pegr/gradlew.bat index 0f8d5937..6689b85b 100755 --- a/pegr/gradlew.bat +++ b/pegr/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -9,19 +25,23 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/pegr/grails-app/conf/application.yml b/pegr/grails-app/conf/application.yml index bc209a04..5a70619a 100644 --- a/pegr/grails-app/conf/application.yml +++ b/pegr/grails-app/conf/application.yml @@ -109,9 +109,9 @@ environments: development: dataSource: dbCreate: none - url: jdbc:mysql://localhost/pegr?useUnicode=true&characterEncoding=UTF-8 - username: sa - password: + url: jdbc:mysql://localhost/pegr_prod?useUnicode=true&characterEncoding=UTF-8 + username: pegr + password: Kenshin1 test: dataSource: dbCreate: none diff --git a/pegr/grails-app/conf/logback.groovy b/pegr/grails-app/conf/logback.groovy deleted file mode 100644 index 20f85e19..00000000 --- a/pegr/grails-app/conf/logback.groovy +++ /dev/null @@ -1,36 +0,0 @@ -import grails.util.BuildSettings -import grails.util.Environment -import org.springframework.boot.logging.logback.ColorConverter -import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter - -import java.nio.charset.Charset - -conversionRule 'clr', ColorConverter -conversionRule 'wex', WhitespaceThrowableProxyConverter - -// See http://logback.qos.ch/manual/groovy.html for details on configuration -appender('STDOUT', ConsoleAppender) { - encoder(PatternLayoutEncoder) { - charset = Charset.forName('UTF-8') - - pattern = - '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} ' + // Date - '%clr(%5p) ' + // Log level - '%clr(---){faint} %clr([%15.15t]){faint} ' + // Thread - '%clr(%-40.40logger{39}){cyan} %clr(:){faint} ' + // Logger - '%m%n%wex' // Message - } -} - -def targetDir = BuildSettings.TARGET_DIR -if (Environment.isDevelopmentMode() && targetDir != null) { - appender("FULL_STACKTRACE", FileAppender) { - file = "${targetDir}/stacktrace.log" - append = true - encoder(PatternLayoutEncoder) { - pattern = "%level %logger - %msg%n" - } - } - logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false) -} -root(ERROR, ['STDOUT']) diff --git a/pegr/grails-app/conf/logback.xml b/pegr/grails-app/conf/logback.xml new file mode 100644 index 00000000..70b14848 --- /dev/null +++ b/pegr/grails-app/conf/logback.xml @@ -0,0 +1,19 @@ + + + + + + + + true + + UTF-8 + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex + + + + + + + + From 8e08d9bab5213edcaca31d6314f703e9239dc1a5 Mon Sep 17 00:00:00 2001 From: Danying Shao Date: Tue, 28 Jan 2025 12:10:36 -0500 Subject: [PATCH 2/3] update dependencies --- pegr/build.gradle | 89 +++++++++++-------- pegr/gradle.properties | 7 +- pegr/gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 52 insertions(+), 46 deletions(-) diff --git a/pegr/build.gradle b/pegr/build.gradle index 9b1bfe0d..e3895c48 100644 --- a/pegr/build.gradle +++ b/pegr/build.gradle @@ -1,32 +1,34 @@ buildscript { repositories { - mavenLocal() maven { url "https://repo.grails.org/grails/core" } + mavenCentral() } dependencies { - classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "org.grails.plugins:hibernate5:${gormVersion-".RELEASE"}" - classpath "com.bertramlabs.plugins:asset-pipeline-gradle:4.3.0" + classpath "org.grails:grails-gradle-plugin:6.2.4" + classpath "org.grails.plugins:hibernate5:8.1.0" classpath 'org.grails.plugins:database-migration:3.1.0.RC1' - classpath "gradle.plugin.com.energizedwork.webdriver-binaries:webdriver-binaries-gradle-plugin:$webdriverBinariesVersion" classpath 'org.grails.plugins:quartz:2.0.13' } } -version "0.1" -group "pegr" +plugins { + id "groovy" + id "com.github.erdi.webdriver-binaries" version "3.2" + id "war" + id "idea" + id "com.bertramlabs.asset-pipeline" version "4.5.1" + id "application" + id "eclipse" +} -apply plugin:"eclipse" -apply plugin:"idea" -apply plugin:"war" apply plugin:"org.grails.grails-web" -apply plugin:"com.bertramlabs.asset-pipeline" apply plugin:"org.grails.grails-gsp" -apply plugin:"com.energizedwork.webdriver-binaries" + +group = "pegr" repositories { - mavenLocal() - maven { url "https://repo.grails.org/grails/core" } + mavenCentral() + maven { url "https://repo.grails.org/grails/core/" } } sourceSets { @@ -44,38 +46,50 @@ configurations { } } -dependencies { - developmentOnly("org.springframework.boot:spring-boot-devtools") - implementation "org.springframework.boot:spring-boot-starter-logging" - implementation "org.springframework.boot:spring-boot-autoconfigure" +dependencies { + profile "org.grails.profiles:web" implementation "org.grails:grails-core" - implementation "org.springframework.boot:spring-boot-starter-actuator" - implementation "org.springframework.boot:spring-boot-starter-tomcat" - implementation "org.grails:grails-web-boot" implementation "org.grails:grails-logging" - implementation "org.grails:grails-plugin-rest" implementation "org.grails:grails-plugin-databinding" implementation "org.grails:grails-plugin-i18n" + implementation "org.grails:grails-plugin-interceptors" + implementation "org.grails:grails-plugin-rest" implementation "org.grails:grails-plugin-services" implementation "org.grails:grails-plugin-url-mappings" - implementation "org.grails:grails-plugin-interceptors" + implementation "org.grails:grails-web-boot" + implementation "org.grails.plugins:gsp" + implementation "org.grails.plugins:hibernate5" + implementation "org.grails.plugins:scaffolding" + implementation "org.springframework.boot:spring-boot-autoconfigure" + implementation "org.springframework.boot:spring-boot-starter" + implementation "org.springframework.boot:spring-boot-starter-actuator" + implementation "org.springframework.boot:spring-boot-starter-logging" + implementation "org.springframework.boot:spring-boot-starter-tomcat" + implementation "org.springframework.boot:spring-boot-starter-validation" + compileOnly "io.micronaut:micronaut-inject-groovy" + console "org.grails:grails-console" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:4.5.1" + runtimeOnly "com.h2database:h2" + runtimeOnly "org.apache.tomcat:tomcat-jdbc" + runtimeOnly "org.fusesource.jansi:jansi:1.18" + testImplementation "io.micronaut:micronaut-inject-groovy" + testImplementation "org.grails:grails-gorm-testing-support" + testImplementation "org.grails:grails-web-testing-support" + testImplementation "org.grails.plugins:geb" + testImplementation "org.seleniumhq.selenium:selenium-api:4.19.1" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:4.19.1" + testImplementation "org.seleniumhq.selenium:selenium-support:4.19.1" + testImplementation "org.spockframework:spock-core" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:4.19.1" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:4.19.1" + testRuntimeOnly "org.seleniumhq.selenium:selenium-safari-driver:4.19.1" implementation "org.grails.plugins:cache" implementation "org.grails.plugins:async" implementation "org.grails.plugins:scaffolding" implementation "org.grails.plugins:events" - implementation "org.grails.plugins:hibernate5" implementation "org.hibernate:hibernate-core:5.4.0.Final" implementation "org.hibernate:hibernate-ehcache" - implementation "org.grails.plugins:gsp" - console "org.grails:grails-console" - profile "org.grails.profiles:web" runtimeOnly "org.glassfish.web:el-impl:2.1.2-b03" - runtimeOnly "com.h2database:h2" - runtimeOnly "org.apache.tomcat:tomcat-jdbc" - runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:4.3.0" - testImplementation "org.grails:grails-gorm-testing-support" - testImplementation "org.grails.plugins:geb" - testImplementation "org.grails:grails-web-testing-support" runtimeOnly 'mysql:mysql-connector-java:5.1.29' implementation 'org.grails.plugins:database-migration:3.1.0.RC1' implementation 'org.grails.plugins:spring-security-core:6.1.2' @@ -86,11 +100,6 @@ dependencies { implementation 'org.grails.plugins:excel-export:2.1' implementation fileTree(dir: 'libs', include: '*.jar') implementation 'org.liquibase:liquibase-core:3.6.3' - testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion" - testRuntimeOnly "org.seleniumhq.selenium:selenium-safari-driver:$seleniumSafariDriverVersion" - testImplementation "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion" - testImplementation "org.seleniumhq.selenium:selenium-api:$seleniumVersion" - testImplementation "org.seleniumhq.selenium:selenium-support:$seleniumVersion" implementation 'com.github.jai-imageio:jai-imageio-core:1.4.0' implementation 'org.apache.poi:poi:5.2.3' implementation 'org.apache.poi:poi-ooxml:5.2.3' @@ -101,7 +110,9 @@ dependencies { } webdriverBinaries { - geckodriver "$geckodriverVersion" + chromedriver '122.0.6260.0' + geckodriver '0.33.0' + edgedriver '110.0.1587.57' } bootRun { diff --git a/pegr/gradle.properties b/pegr/gradle.properties index df631d21..da78e785 100644 --- a/pegr/gradle.properties +++ b/pegr/gradle.properties @@ -1,11 +1,6 @@ -groovyVersion=3.0.21 grailsVersion=6.2.3 grailsGradlePluginVersion=6.2.4 -gormVersion=8.0.0 -seleniumVersion=4.12.0 -webdriverBinariesVersion=1.4 -geckodriverVersion=0.33.0 -seleniumSafariDriverVersion=3.14.0 +version=0.1 org.gradle.caching=true org.gradle.daemon=true org.gradle.parallel=true diff --git a/pegr/gradle/wrapper/gradle-wrapper.properties b/pegr/gradle/wrapper/gradle-wrapper.properties index 4e86b927..b1624c47 100644 --- a/pegr/gradle/wrapper/gradle-wrapper.properties +++ b/pegr/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 1409a862e93c2f12e15c0d195cfa783e56df0685 Mon Sep 17 00:00:00 2001 From: Danying Shao Date: Tue, 28 Jan 2025 15:24:05 -0500 Subject: [PATCH 3/3] clean up --- pegr/grails-app/conf/application.groovy | 64 ------------------------- pegr/grails-app/conf/application.yml | 6 +-- 2 files changed, 1 insertion(+), 69 deletions(-) diff --git a/pegr/grails-app/conf/application.groovy b/pegr/grails-app/conf/application.groovy index 5d0c3a25..2a38c319 100644 --- a/pegr/grails-app/conf/application.groovy +++ b/pegr/grails-app/conf/application.groovy @@ -1,67 +1,3 @@ -// locations to search for config files that get merged into the main config; -// config files can be ConfigSlurper scripts, Java properties files, or classes -// in the classpath in ConfigSlurper format - - - -grails.config.locations = [ "classpath:${appName}-config.properties", - "classpath:${appName}-config.groovy", - "file:/usr/local/${appName}/${appName}-config.properties", - "file:${userHome}/.grails/${appName}-config.properties", - "file:${userHome}/.grails/${appName}-config.groovy"] - -// if (System.properties["${appName}.config.location"]) { -// grails.config.locations << "file:" + System.properties["${appName}.config.location"] -// } - -grails.project.groupId = appName // change this to alter the default package name and Maven publishing destination - -// The ACCEPT header will not be used for content negotiation for user agents containing the following strings (defaults to the 4 major rendering engines) -grails.mime.disable.accept.header.userAgents = ['Gecko', 'WebKit', 'Presto', 'Trident'] -grails.mime.types = [ // the first one is the default format - all: '*/*', // 'all' maps to '*' or the first available format in withFormat - atom: 'application/atom+xml', - css: 'text/css', - csv: 'text/csv', - form: 'application/x-www-form-urlencoded', - html: ['text/html','application/xhtml+xml'], - js: 'text/javascript', - json: ['application/json', 'text/json'], - multipartForm: 'multipart/form-data', - rss: 'application/rss+xml', - text: 'text/plain', - hal: ['application/hal+json','application/hal+xml'], - xml: ['text/xml', 'application/xml'] -] - -// URL Mapping Cache Max Size, defaults to 5000 -//grails.urlmapping.cache.maxsize = 1000 - -// Legacy setting for codec used to encode data with ${} -grails.views.default.codec = "html" - -// The default scope for controllers. May be prototype, session or singleton. -// If unspecified, controllers are prototype scoped. -grails.controllers.defaultScope = 'singleton' - -// GSP settings -grails { - views { - gsp { - encoding = 'UTF-8' - htmlcodec = 'xml' // use xml escaping instead of HTML4 escaping - codecs { - expression = 'html' // escapes values inside ${} - scriptlet = 'html' // escapes output from scriptlets in GSPs - taglib = 'none' // escapes output from taglibs - staticparts = 'none' // escapes output from static template parts - } - } - // escapes all not-encoded output at final stage of outputting - // filteringCodecForContentType.'text/html' = 'html' - } -} - // scaffolding templates configuration grails.scaffolding.templates.domainSuffix = 'Instance' diff --git a/pegr/grails-app/conf/application.yml b/pegr/grails-app/conf/application.yml index 5a70619a..e50c98f6 100644 --- a/pegr/grails-app/conf/application.yml +++ b/pegr/grails-app/conf/application.yml @@ -109,9 +109,6 @@ environments: development: dataSource: dbCreate: none - url: jdbc:mysql://localhost/pegr_prod?useUnicode=true&characterEncoding=UTF-8 - username: pegr - password: Kenshin1 test: dataSource: dbCreate: none @@ -119,7 +116,6 @@ environments: production: dataSource: dbCreate: none - #url: jdbc:h2:./prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE properties: jmxEnabled: true initialSize: 5 @@ -141,4 +137,4 @@ environments: --- server: servlet: - context-path: /pegr \ No newline at end of file + context-path: /pegr