Commit 82994579affdddc0321dec92b39c4dd7aa5ecd14
1 parent
23379372
2024.04.26
Showing
10 changed files
with
388 additions
and
150 deletions
Show diff stats
@@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
8 | # "License"); you may not use this file except in compliance | 8 | # "License"); you may not use this file except in compliance |
9 | # with the License. You may obtain a copy of the License at | 9 | # with the License. You may obtain a copy of the License at |
10 | # | 10 | # |
11 | -# https://www.apache.org/licenses/LICENSE-2.0 | 11 | +# http://www.apache.org/licenses/LICENSE-2.0 |
12 | # | 12 | # |
13 | # Unless required by applicable law or agreed to in writing, | 13 | # Unless required by applicable law or agreed to in writing, |
14 | # software distributed under the License is distributed on an | 14 | # software distributed under the License is distributed on an |
@@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
19 | # ---------------------------------------------------------------------------- | 19 | # ---------------------------------------------------------------------------- |
20 | 20 | ||
21 | # ---------------------------------------------------------------------------- | 21 | # ---------------------------------------------------------------------------- |
22 | -# Apache Maven Wrapper startup batch script, version 3.2.0 | 22 | +# Maven Start Up Batch script |
23 | # | 23 | # |
24 | # Required ENV vars: | 24 | # Required ENV vars: |
25 | # ------------------ | 25 | # ------------------ |
@@ -27,6 +27,7 @@ | @@ -27,6 +27,7 @@ | ||
27 | # | 27 | # |
28 | # Optional ENV vars | 28 | # Optional ENV vars |
29 | # ----------------- | 29 | # ----------------- |
30 | +# M2_HOME - location of maven2's installed home dir | ||
30 | # MAVEN_OPTS - parameters passed to the Java VM when running Maven | 31 | # MAVEN_OPTS - parameters passed to the Java VM when running Maven |
31 | # e.g. to debug Maven itself, use | 32 | # e.g. to debug Maven itself, use |
32 | # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 | 33 | # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 |
@@ -35,10 +36,6 @@ | @@ -35,10 +36,6 @@ | ||
35 | 36 | ||
36 | if [ -z "$MAVEN_SKIP_RC" ] ; then | 37 | if [ -z "$MAVEN_SKIP_RC" ] ; then |
37 | 38 | ||
38 | - if [ -f /usr/local/etc/mavenrc ] ; then | ||
39 | - . /usr/local/etc/mavenrc | ||
40 | - fi | ||
41 | - | ||
42 | if [ -f /etc/mavenrc ] ; then | 39 | if [ -f /etc/mavenrc ] ; then |
43 | . /etc/mavenrc | 40 | . /etc/mavenrc |
44 | fi | 41 | fi |
@@ -53,7 +50,7 @@ fi | @@ -53,7 +50,7 @@ fi | ||
53 | cygwin=false; | 50 | cygwin=false; |
54 | darwin=false; | 51 | darwin=false; |
55 | mingw=false | 52 | mingw=false |
56 | -case "$(uname)" in | 53 | +case "`uname`" in |
57 | CYGWIN*) cygwin=true ;; | 54 | CYGWIN*) cygwin=true ;; |
58 | MINGW*) mingw=true;; | 55 | MINGW*) mingw=true;; |
59 | Darwin*) darwin=true | 56 | Darwin*) darwin=true |
@@ -61,9 +58,9 @@ case "$(uname)" in | @@ -61,9 +58,9 @@ case "$(uname)" in | ||
61 | # See https://developer.apple.com/library/mac/qa/qa1170/_index.html | 58 | # See https://developer.apple.com/library/mac/qa/qa1170/_index.html |
62 | if [ -z "$JAVA_HOME" ]; then | 59 | if [ -z "$JAVA_HOME" ]; then |
63 | if [ -x "/usr/libexec/java_home" ]; then | 60 | if [ -x "/usr/libexec/java_home" ]; then |
64 | - JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME | 61 | + export JAVA_HOME="`/usr/libexec/java_home`" |
65 | else | 62 | else |
66 | - JAVA_HOME="/Library/Java/Home"; export JAVA_HOME | 63 | + export JAVA_HOME="/Library/Java/Home" |
67 | fi | 64 | fi |
68 | fi | 65 | fi |
69 | ;; | 66 | ;; |
@@ -71,38 +68,68 @@ esac | @@ -71,38 +68,68 @@ esac | ||
71 | 68 | ||
72 | if [ -z "$JAVA_HOME" ] ; then | 69 | if [ -z "$JAVA_HOME" ] ; then |
73 | if [ -r /etc/gentoo-release ] ; then | 70 | if [ -r /etc/gentoo-release ] ; then |
74 | - JAVA_HOME=$(java-config --jre-home) | 71 | + JAVA_HOME=`java-config --jre-home` |
75 | fi | 72 | fi |
76 | fi | 73 | fi |
77 | 74 | ||
75 | +if [ -z "$M2_HOME" ] ; then | ||
76 | + ## resolve links - $0 may be a link to maven's home | ||
77 | + PRG="$0" | ||
78 | + | ||
79 | + # need this for relative symlinks | ||
80 | + while [ -h "$PRG" ] ; do | ||
81 | + ls=`ls -ld "$PRG"` | ||
82 | + link=`expr "$ls" : '.*-> \(.*\)$'` | ||
83 | + if expr "$link" : '/.*' > /dev/null; then | ||
84 | + PRG="$link" | ||
85 | + else | ||
86 | + PRG="`dirname "$PRG"`/$link" | ||
87 | + fi | ||
88 | + done | ||
89 | + | ||
90 | + saveddir=`pwd` | ||
91 | + | ||
92 | + M2_HOME=`dirname "$PRG"`/.. | ||
93 | + | ||
94 | + # make it fully qualified | ||
95 | + M2_HOME=`cd "$M2_HOME" && pwd` | ||
96 | + | ||
97 | + cd "$saveddir" | ||
98 | + # echo Using m2 at $M2_HOME | ||
99 | +fi | ||
100 | + | ||
78 | # For Cygwin, ensure paths are in UNIX format before anything is touched | 101 | # For Cygwin, ensure paths are in UNIX format before anything is touched |
79 | if $cygwin ; then | 102 | if $cygwin ; then |
103 | + [ -n "$M2_HOME" ] && | ||
104 | + M2_HOME=`cygpath --unix "$M2_HOME"` | ||
80 | [ -n "$JAVA_HOME" ] && | 105 | [ -n "$JAVA_HOME" ] && |
81 | - JAVA_HOME=$(cygpath --unix "$JAVA_HOME") | 106 | + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` |
82 | [ -n "$CLASSPATH" ] && | 107 | [ -n "$CLASSPATH" ] && |
83 | - CLASSPATH=$(cygpath --path --unix "$CLASSPATH") | 108 | + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` |
84 | fi | 109 | fi |
85 | 110 | ||
86 | # For Mingw, ensure paths are in UNIX format before anything is touched | 111 | # For Mingw, ensure paths are in UNIX format before anything is touched |
87 | if $mingw ; then | 112 | if $mingw ; then |
88 | - [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && | ||
89 | - JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" | 113 | + [ -n "$M2_HOME" ] && |
114 | + M2_HOME="`(cd "$M2_HOME"; pwd)`" | ||
115 | + [ -n "$JAVA_HOME" ] && | ||
116 | + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" | ||
90 | fi | 117 | fi |
91 | 118 | ||
92 | if [ -z "$JAVA_HOME" ]; then | 119 | if [ -z "$JAVA_HOME" ]; then |
93 | - javaExecutable="$(which javac)" | ||
94 | - if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then | 120 | + javaExecutable="`which javac`" |
121 | + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then | ||
95 | # readlink(1) is not available as standard on Solaris 10. | 122 | # readlink(1) is not available as standard on Solaris 10. |
96 | - readLink=$(which readlink) | ||
97 | - if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then | 123 | + readLink=`which readlink` |
124 | + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then | ||
98 | if $darwin ; then | 125 | if $darwin ; then |
99 | - javaHome="$(dirname "\"$javaExecutable\"")" | ||
100 | - javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" | 126 | + javaHome="`dirname \"$javaExecutable\"`" |
127 | + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" | ||
101 | else | 128 | else |
102 | - javaExecutable="$(readlink -f "\"$javaExecutable\"")" | 129 | + javaExecutable="`readlink -f \"$javaExecutable\"`" |
103 | fi | 130 | fi |
104 | - javaHome="$(dirname "\"$javaExecutable\"")" | ||
105 | - javaHome=$(expr "$javaHome" : '\(.*\)/bin') | 131 | + javaHome="`dirname \"$javaExecutable\"`" |
132 | + javaHome=`expr "$javaHome" : '\(.*\)/bin'` | ||
106 | JAVA_HOME="$javaHome" | 133 | JAVA_HOME="$javaHome" |
107 | export JAVA_HOME | 134 | export JAVA_HOME |
108 | fi | 135 | fi |
@@ -118,7 +145,7 @@ if [ -z "$JAVACMD" ] ; then | @@ -118,7 +145,7 @@ if [ -z "$JAVACMD" ] ; then | ||
118 | JAVACMD="$JAVA_HOME/bin/java" | 145 | JAVACMD="$JAVA_HOME/bin/java" |
119 | fi | 146 | fi |
120 | else | 147 | else |
121 | - JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" | 148 | + JAVACMD="`which java`" |
122 | fi | 149 | fi |
123 | fi | 150 | fi |
124 | 151 | ||
@@ -132,9 +159,12 @@ if [ -z "$JAVA_HOME" ] ; then | @@ -132,9 +159,12 @@ if [ -z "$JAVA_HOME" ] ; then | ||
132 | echo "Warning: JAVA_HOME environment variable is not set." | 159 | echo "Warning: JAVA_HOME environment variable is not set." |
133 | fi | 160 | fi |
134 | 161 | ||
162 | +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher | ||
163 | + | ||
135 | # traverses directory structure from process work directory to filesystem root | 164 | # traverses directory structure from process work directory to filesystem root |
136 | # first directory with .mvn subdirectory is considered project base directory | 165 | # first directory with .mvn subdirectory is considered project base directory |
137 | find_maven_basedir() { | 166 | find_maven_basedir() { |
167 | + | ||
138 | if [ -z "$1" ] | 168 | if [ -z "$1" ] |
139 | then | 169 | then |
140 | echo "Path not specified to find_maven_basedir" | 170 | echo "Path not specified to find_maven_basedir" |
@@ -150,99 +180,96 @@ find_maven_basedir() { | @@ -150,99 +180,96 @@ find_maven_basedir() { | ||
150 | fi | 180 | fi |
151 | # workaround for JBEAP-8937 (on Solaris 10/Sparc) | 181 | # workaround for JBEAP-8937 (on Solaris 10/Sparc) |
152 | if [ -d "${wdir}" ]; then | 182 | if [ -d "${wdir}" ]; then |
153 | - wdir=$(cd "$wdir/.." || exit 1; pwd) | 183 | + wdir=`cd "$wdir/.."; pwd` |
154 | fi | 184 | fi |
155 | # end of workaround | 185 | # end of workaround |
156 | done | 186 | done |
157 | - printf '%s' "$(cd "$basedir" || exit 1; pwd)" | 187 | + echo "${basedir}" |
158 | } | 188 | } |
159 | 189 | ||
160 | # concatenates all lines of a file | 190 | # concatenates all lines of a file |
161 | concat_lines() { | 191 | concat_lines() { |
162 | if [ -f "$1" ]; then | 192 | if [ -f "$1" ]; then |
163 | - # Remove \r in case we run on Windows within Git Bash | ||
164 | - # and check out the repository with auto CRLF management | ||
165 | - # enabled. Otherwise, we may read lines that are delimited with | ||
166 | - # \r\n and produce $'-Xarg\r' rather than -Xarg due to word | ||
167 | - # splitting rules. | ||
168 | - tr -s '\r\n' ' ' < "$1" | ||
169 | - fi | ||
170 | -} | ||
171 | - | ||
172 | -log() { | ||
173 | - if [ "$MVNW_VERBOSE" = true ]; then | ||
174 | - printf '%s\n' "$1" | 193 | + echo "$(tr -s '\n' ' ' < "$1")" |
175 | fi | 194 | fi |
176 | } | 195 | } |
177 | 196 | ||
178 | -BASE_DIR=$(find_maven_basedir "$(dirname "$0")") | 197 | +BASE_DIR=`find_maven_basedir "$(pwd)"` |
179 | if [ -z "$BASE_DIR" ]; then | 198 | if [ -z "$BASE_DIR" ]; then |
180 | exit 1; | 199 | exit 1; |
181 | fi | 200 | fi |
182 | 201 | ||
183 | -MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR | ||
184 | -log "$MAVEN_PROJECTBASEDIR" | ||
185 | - | ||
186 | ########################################################################################## | 202 | ########################################################################################## |
187 | # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central | 203 | # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central |
188 | # This allows using the maven wrapper in projects that prohibit checking in binary data. | 204 | # This allows using the maven wrapper in projects that prohibit checking in binary data. |
189 | ########################################################################################## | 205 | ########################################################################################## |
190 | -wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" | ||
191 | -if [ -r "$wrapperJarPath" ]; then | ||
192 | - log "Found $wrapperJarPath" | 206 | +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then |
207 | + if [ "$MVNW_VERBOSE" = true ]; then | ||
208 | + echo "Found .mvn/wrapper/maven-wrapper.jar" | ||
209 | + fi | ||
193 | else | 210 | else |
194 | - log "Couldn't find $wrapperJarPath, downloading it ..." | ||
195 | - | 211 | + if [ "$MVNW_VERBOSE" = true ]; then |
212 | + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." | ||
213 | + fi | ||
196 | if [ -n "$MVNW_REPOURL" ]; then | 214 | if [ -n "$MVNW_REPOURL" ]; then |
197 | - wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" | 215 | + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" |
198 | else | 216 | else |
199 | - wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" | 217 | + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" |
200 | fi | 218 | fi |
201 | - while IFS="=" read -r key value; do | ||
202 | - # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) | ||
203 | - safeValue=$(echo "$value" | tr -d '\r') | ||
204 | - case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; | 219 | + while IFS="=" read key value; do |
220 | + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; | ||
205 | esac | 221 | esac |
206 | - done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" | ||
207 | - log "Downloading from: $wrapperUrl" | ||
208 | - | 222 | + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" |
223 | + if [ "$MVNW_VERBOSE" = true ]; then | ||
224 | + echo "Downloading from: $jarUrl" | ||
225 | + fi | ||
226 | + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" | ||
209 | if $cygwin; then | 227 | if $cygwin; then |
210 | - wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") | 228 | + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` |
211 | fi | 229 | fi |
212 | 230 | ||
213 | if command -v wget > /dev/null; then | 231 | if command -v wget > /dev/null; then |
214 | - log "Found wget ... using wget" | ||
215 | - [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" | 232 | + if [ "$MVNW_VERBOSE" = true ]; then |
233 | + echo "Found wget ... using wget" | ||
234 | + fi | ||
216 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then | 235 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then |
217 | - wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" | 236 | + wget "$jarUrl" -O "$wrapperJarPath" |
218 | else | 237 | else |
219 | - wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" | 238 | + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" |
220 | fi | 239 | fi |
221 | elif command -v curl > /dev/null; then | 240 | elif command -v curl > /dev/null; then |
222 | - log "Found curl ... using curl" | ||
223 | - [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" | 241 | + if [ "$MVNW_VERBOSE" = true ]; then |
242 | + echo "Found curl ... using curl" | ||
243 | + fi | ||
224 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then | 244 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then |
225 | - curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" | 245 | + curl -o "$wrapperJarPath" "$jarUrl" -f |
226 | else | 246 | else |
227 | - curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" | 247 | + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f |
228 | fi | 248 | fi |
249 | + | ||
229 | else | 250 | else |
230 | - log "Falling back to using Java to download" | ||
231 | - javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" | ||
232 | - javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" | 251 | + if [ "$MVNW_VERBOSE" = true ]; then |
252 | + echo "Falling back to using Java to download" | ||
253 | + fi | ||
254 | + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" | ||
233 | # For Cygwin, switch paths to Windows format before running javac | 255 | # For Cygwin, switch paths to Windows format before running javac |
234 | if $cygwin; then | 256 | if $cygwin; then |
235 | - javaSource=$(cygpath --path --windows "$javaSource") | ||
236 | - javaClass=$(cygpath --path --windows "$javaClass") | 257 | + javaClass=`cygpath --path --windows "$javaClass"` |
237 | fi | 258 | fi |
238 | - if [ -e "$javaSource" ]; then | ||
239 | - if [ ! -e "$javaClass" ]; then | ||
240 | - log " - Compiling MavenWrapperDownloader.java ..." | ||
241 | - ("$JAVA_HOME/bin/javac" "$javaSource") | 259 | + if [ -e "$javaClass" ]; then |
260 | + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then | ||
261 | + if [ "$MVNW_VERBOSE" = true ]; then | ||
262 | + echo " - Compiling MavenWrapperDownloader.java ..." | ||
263 | + fi | ||
264 | + # Compiling the Java class | ||
265 | + ("$JAVA_HOME/bin/javac" "$javaClass") | ||
242 | fi | 266 | fi |
243 | - if [ -e "$javaClass" ]; then | ||
244 | - log " - Running MavenWrapperDownloader.java ..." | ||
245 | - ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" | 267 | + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then |
268 | + # Running the downloader | ||
269 | + if [ "$MVNW_VERBOSE" = true ]; then | ||
270 | + echo " - Running MavenWrapperDownloader.java ..." | ||
271 | + fi | ||
272 | + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") | ||
246 | fi | 273 | fi |
247 | fi | 274 | fi |
248 | fi | 275 | fi |
@@ -251,58 +278,33 @@ fi | @@ -251,58 +278,33 @@ fi | ||
251 | # End of extension | 278 | # End of extension |
252 | ########################################################################################## | 279 | ########################################################################################## |
253 | 280 | ||
254 | -# If specified, validate the SHA-256 sum of the Maven wrapper jar file | ||
255 | -wrapperSha256Sum="" | ||
256 | -while IFS="=" read -r key value; do | ||
257 | - case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; | ||
258 | - esac | ||
259 | -done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" | ||
260 | -if [ -n "$wrapperSha256Sum" ]; then | ||
261 | - wrapperSha256Result=false | ||
262 | - if command -v sha256sum > /dev/null; then | ||
263 | - if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then | ||
264 | - wrapperSha256Result=true | ||
265 | - fi | ||
266 | - elif command -v shasum > /dev/null; then | ||
267 | - if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then | ||
268 | - wrapperSha256Result=true | ||
269 | - fi | ||
270 | - else | ||
271 | - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." | ||
272 | - echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." | ||
273 | - exit 1 | ||
274 | - fi | ||
275 | - if [ $wrapperSha256Result = false ]; then | ||
276 | - echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 | ||
277 | - echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 | ||
278 | - echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 | ||
279 | - exit 1 | ||
280 | - fi | 281 | +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} |
282 | +if [ "$MVNW_VERBOSE" = true ]; then | ||
283 | + echo $MAVEN_PROJECTBASEDIR | ||
281 | fi | 284 | fi |
282 | - | ||
283 | MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" | 285 | MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" |
284 | 286 | ||
285 | # For Cygwin, switch paths to Windows format before running java | 287 | # For Cygwin, switch paths to Windows format before running java |
286 | if $cygwin; then | 288 | if $cygwin; then |
289 | + [ -n "$M2_HOME" ] && | ||
290 | + M2_HOME=`cygpath --path --windows "$M2_HOME"` | ||
287 | [ -n "$JAVA_HOME" ] && | 291 | [ -n "$JAVA_HOME" ] && |
288 | - JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") | 292 | + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` |
289 | [ -n "$CLASSPATH" ] && | 293 | [ -n "$CLASSPATH" ] && |
290 | - CLASSPATH=$(cygpath --path --windows "$CLASSPATH") | 294 | + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` |
291 | [ -n "$MAVEN_PROJECTBASEDIR" ] && | 295 | [ -n "$MAVEN_PROJECTBASEDIR" ] && |
292 | - MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") | 296 | + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` |
293 | fi | 297 | fi |
294 | 298 | ||
295 | # Provide a "standardized" way to retrieve the CLI args that will | 299 | # Provide a "standardized" way to retrieve the CLI args that will |
296 | # work with both Windows and non-Windows executions. | 300 | # work with both Windows and non-Windows executions. |
297 | -MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" | 301 | +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" |
298 | export MAVEN_CMD_LINE_ARGS | 302 | export MAVEN_CMD_LINE_ARGS |
299 | 303 | ||
300 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain | 304 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain |
301 | 305 | ||
302 | -# shellcheck disable=SC2086 # safe args | ||
303 | exec "$JAVACMD" \ | 306 | exec "$JAVACMD" \ |
304 | $MAVEN_OPTS \ | 307 | $MAVEN_OPTS \ |
305 | - $MAVEN_DEBUG_OPTS \ | ||
306 | -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ | 308 | -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ |
307 | - "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ | 309 | + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ |
308 | ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" | 310 | ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" |
src/main/java/com/batch/config/MatchingExtraProcessorAuto.java
@@ -42,12 +42,14 @@ public class MatchingExtraProcessorAuto { | @@ -42,12 +42,14 @@ public class MatchingExtraProcessorAuto { | ||
42 | String sAccnutYm = (String) paramRec.get("accnut_ym"); | 42 | String sAccnutYm = (String) paramRec.get("accnut_ym"); |
43 | String sCprCode = (String) paramRec.get("cpr_code"); | 43 | String sCprCode = (String) paramRec.get("cpr_code"); |
44 | String sPartCpr = (String) paramRec.get("partn_cpr"); | 44 | String sPartCpr = (String) paramRec.get("partn_cpr"); |
45 | + String sDelngCrncy = (String) paramRec.get("delng_crncy"); | ||
45 | String sConds = (String) paramRec.get("conds"); | 46 | String sConds = (String) paramRec.get("conds"); |
46 | 47 | ||
47 | //작업시작 | 48 | //작업시작 |
48 | Map<String, Object> mParam = new HashMap<String, Object>(); | 49 | Map<String, Object> mParam = new HashMap<String, Object>(); |
49 | mParam.put("sysSe", sSysSe); | 50 | mParam.put("sysSe", sSysSe); |
50 | mParam.put("accnutYm", sAccnutYm); | 51 | mParam.put("accnutYm", sAccnutYm); |
52 | + mParam.put("delngCurncy", sDelngCrncy); | ||
51 | mParam.put("conds", sConds); | 53 | mParam.put("conds", sConds); |
52 | 54 | ||
53 | //---------------------------------------------------------------------------- | 55 | //---------------------------------------------------------------------------- |
src/main/java/com/batch/controller/JobController.java
@@ -8,6 +8,7 @@ import java.util.Map; | @@ -8,6 +8,7 @@ import java.util.Map; | ||
8 | import java.util.UUID; | 8 | import java.util.UUID; |
9 | 9 | ||
10 | import org.springframework.beans.factory.annotation.Autowired; | 10 | import org.springframework.beans.factory.annotation.Autowired; |
11 | +import org.springframework.beans.factory.annotation.Value; | ||
11 | import org.springframework.web.bind.annotation.GetMapping; | 12 | import org.springframework.web.bind.annotation.GetMapping; |
12 | import org.springframework.web.bind.annotation.PathVariable; | 13 | import org.springframework.web.bind.annotation.PathVariable; |
13 | import org.springframework.web.bind.annotation.PostMapping; | 14 | import org.springframework.web.bind.annotation.PostMapping; |
@@ -20,6 +21,7 @@ import com.batch.config.MatchingSetup.Matching; | @@ -20,6 +21,7 @@ import com.batch.config.MatchingSetup.Matching; | ||
20 | import com.batch.mapper.primary.MatchingInnerDelingMapper; | 21 | import com.batch.mapper.primary.MatchingInnerDelingMapper; |
21 | import com.batch.service.JobService; | 22 | import com.batch.service.JobService; |
22 | import com.batch.util.FileUtil; | 23 | import com.batch.util.FileUtil; |
24 | +import com.batch.util.JsonUtil; | ||
23 | import com.google.gson.JsonObject; | 25 | import com.google.gson.JsonObject; |
24 | 26 | ||
25 | import lombok.extern.slf4j.Slf4j; | 27 | import lombok.extern.slf4j.Slf4j; |
@@ -33,6 +35,12 @@ public class JobController { | @@ -33,6 +35,12 @@ public class JobController { | ||
33 | private JobService jobService; | 35 | private JobService jobService; |
34 | @Autowired | 36 | @Autowired |
35 | private MatchingInnerDelingMapper matchingInnerDelingMapper; | 37 | private MatchingInnerDelingMapper matchingInnerDelingMapper; |
38 | + @Value("${thread.ai.count.rowmax}") | ||
39 | + BigDecimal bdAiAsyncMaxRowCount; | ||
40 | + @Value("${thread.ai.processing.wait}") | ||
41 | + BigDecimal bdAiAsyncWaitTime; | ||
42 | + @Value("${thread.ai.processing.wait.total}") | ||
43 | + BigDecimal bdAiAsyncTotalWaitTime; | ||
36 | 44 | ||
37 | 45 | ||
38 | 46 | ||
@@ -67,9 +75,9 @@ public class JobController { | @@ -67,9 +75,9 @@ public class JobController { | ||
67 | UUID uuid = UUID.randomUUID(); | 75 | UUID uuid = UUID.randomUUID(); |
68 | String sJobGroup = uuid.toString(); | 76 | String sJobGroup = uuid.toString(); |
69 | 77 | ||
70 | - log.debug("Start Create Job"); | 78 | + log.info("Start Create Job"); |
71 | jobService.createData(sJobGroup, params); | 79 | jobService.createData(sJobGroup, params); |
72 | - log.debug("End Create Job"); | 80 | + log.info("End Create Job"); |
73 | 81 | ||
74 | Map<String, String> rtnMap = new HashMap<String, String>(); | 82 | Map<String, String> rtnMap = new HashMap<String, String>(); |
75 | rtnMap.put("jobGroupId", sJobGroup); | 83 | rtnMap.put("jobGroupId", sJobGroup); |
@@ -94,9 +102,9 @@ public class JobController { | @@ -94,9 +102,9 @@ public class JobController { | ||
94 | UUID uuid = UUID.randomUUID(); | 102 | UUID uuid = UUID.randomUUID(); |
95 | String sJobGroup = uuid.toString(); | 103 | String sJobGroup = uuid.toString(); |
96 | 104 | ||
97 | - log.debug("Start Matching Job"); | 105 | + log.info("Start Matching Job"); |
98 | jobService.matchingJob(sJobGroup, params); | 106 | jobService.matchingJob(sJobGroup, params); |
99 | - log.debug("End Matching Job"); | 107 | + log.info("End Matching Job"); |
100 | 108 | ||
101 | Map<String, String> rtnMap = new HashMap<String, String>(); | 109 | Map<String, String> rtnMap = new HashMap<String, String>(); |
102 | rtnMap.put("jobGroupId", sJobGroup); | 110 | rtnMap.put("jobGroupId", sJobGroup); |
@@ -122,7 +130,8 @@ public class JobController { | @@ -122,7 +130,8 @@ public class JobController { | ||
122 | UUID uuid = UUID.randomUUID(); | 130 | UUID uuid = UUID.randomUUID(); |
123 | String sJobGroup = uuid.toString(); | 131 | String sJobGroup = uuid.toString(); |
124 | 132 | ||
125 | - log.debug("Start Extra Matching Job"); | 133 | + log.info("Start Extra Matching Job"); |
134 | + params.put("asCurrency", "Y"); | ||
126 | List<Map> retData = matchingInnerDelingMapper.getCustomItemReadData(params); | 135 | List<Map> retData = matchingInnerDelingMapper.getCustomItemReadData(params); |
127 | 136 | ||
128 | // 수익/비용 | 137 | // 수익/비용 |
@@ -140,7 +149,7 @@ public class JobController { | @@ -140,7 +149,7 @@ public class JobController { | ||
140 | jobService.extraJobSub(sJobGroup, cParams); | 149 | jobService.extraJobSub(sJobGroup, cParams); |
141 | } | 150 | } |
142 | 151 | ||
143 | - log.debug("End Extra Matching Job"); | 152 | + log.info("End Extra Matching Job"); |
144 | 153 | ||
145 | Map<String, String> rtnMap = new HashMap<String, String>(); | 154 | Map<String, String> rtnMap = new HashMap<String, String>(); |
146 | rtnMap.put("jobGroupId", sJobGroup); | 155 | rtnMap.put("jobGroupId", sJobGroup); |
@@ -166,7 +175,7 @@ public class JobController { | @@ -166,7 +175,7 @@ public class JobController { | ||
166 | UUID uuid = UUID.randomUUID(); | 175 | UUID uuid = UUID.randomUUID(); |
167 | String sJobGroup = uuid.toString(); | 176 | String sJobGroup = uuid.toString(); |
168 | 177 | ||
169 | - log.debug("Start AI Sub Matching Job"); | 178 | + log.info("Start AI Sub Matching Job"); |
170 | List<Map> retData = matchingInnerDelingMapper.getAiSubReadData(params); | 179 | List<Map> retData = matchingInnerDelingMapper.getAiSubReadData(params); |
171 | 180 | ||
172 | //AI의 경우 수익비용만 매칭하고 있음 | 181 | //AI의 경우 수익비용만 매칭하고 있음 |
@@ -178,7 +187,7 @@ public class JobController { | @@ -178,7 +187,7 @@ public class JobController { | ||
178 | jobService.aiSubJobSub(sJobGroup, cParams); | 187 | jobService.aiSubJobSub(sJobGroup, cParams); |
179 | } | 188 | } |
180 | 189 | ||
181 | - log.debug("End Extra Matching Job"); | 190 | + log.info("End Extra Matching Job"); |
182 | 191 | ||
183 | Map<String, String> rtnMap = new HashMap<String, String>(); | 192 | Map<String, String> rtnMap = new HashMap<String, String>(); |
184 | rtnMap.put("jobGroupId", sJobGroup); | 193 | rtnMap.put("jobGroupId", sJobGroup); |
@@ -200,19 +209,49 @@ public class JobController { | @@ -200,19 +209,49 @@ public class JobController { | ||
200 | * "error_range": "0" | 209 | * "error_range": "0" |
201 | * } | 210 | * } |
202 | */ | 211 | */ |
203 | - //Job Create Log | 212 | + //Job Create LogmatchingInnerDelingMapper |
204 | UUID uuid = UUID.randomUUID(); | 213 | UUID uuid = UUID.randomUUID(); |
205 | String sJobGroup = uuid.toString(); | 214 | String sJobGroup = uuid.toString(); |
206 | 215 | ||
207 | - log.debug("Start AI Matching Job"); | 216 | + log.info("Start AI Matching Job"); |
208 | List<Map> retData = matchingInnerDelingMapper.getAiReadData(params); | 217 | List<Map> retData = matchingInnerDelingMapper.getAiReadData(params); |
218 | + BigDecimal bdCurrentRowCount = BigDecimal.ZERO; | ||
209 | for(Map curMap : retData) { | 219 | for(Map curMap : retData) { |
210 | Map<String, Object> curMParams = new HashMap<String, Object>(); | 220 | Map<String, Object> curMParams = new HashMap<String, Object>(); |
211 | curMParams.putAll(curMap); | 221 | curMParams.putAll(curMap); |
212 | curMParams.put("error_range", params.get("error_range")); | 222 | curMParams.put("error_range", params.get("error_range")); |
223 | + | ||
224 | + BigDecimal bdCntAll = new BigDecimal(String.valueOf(curMap.get("cnt_all"))); | ||
225 | + bdCurrentRowCount = bdCurrentRowCount.add(bdCntAll); | ||
226 | + log.info("Call Matching Job (" + JsonUtil.objectToString(curMap) + ")"); | ||
213 | jobService.aiJobSub(sJobGroup, curMParams); | 227 | jobService.aiJobSub(sJobGroup, curMParams); |
228 | + | ||
229 | + //전체카운트가 처리가능카운트를 넘어설때 | ||
230 | + if (bdCurrentRowCount.compareTo(bdAiAsyncMaxRowCount) > -1) { | ||
231 | + bdCurrentRowCount = BigDecimal.ZERO; | ||
232 | + | ||
233 | + //현재 작업그룹이 종료가 되었는지 체크해서 종료시 카운트 초기화 하고 다음작업을 한다. | ||
234 | + boolean blnStatus = true; | ||
235 | + Integer iTotalWait = 0; | ||
236 | + Integer iWaitTime = bdAiAsyncWaitTime.intValue() * 1000; //밀리초 | ||
237 | + do { | ||
238 | + Map<String, Object> mParam = new HashMap<String, Object>(); | ||
239 | + mParam.put("userJobGroup", sJobGroup); | ||
240 | + List<Map> lmJob = matchingInnerDelingMapper.getUserJobStatus(mParam); | ||
241 | + for (Map curJob : lmJob) { | ||
242 | + String ScurStatus = (String) curJob.get("status"); | ||
243 | + if (!"Finished".equalsIgnoreCase(ScurStatus)) { | ||
244 | + blnStatus = false; | ||
245 | + Thread.sleep(iWaitTime); | ||
246 | + iTotalWait = iTotalWait + iWaitTime; | ||
247 | + break; | ||
248 | + } | ||
249 | + } | ||
250 | + } while (!blnStatus && iTotalWait < bdAiAsyncTotalWaitTime.intValue()); //전체 기다리는 시간까지 체크 | ||
251 | + log.info("Next Thread Group Processing"); | ||
252 | + } | ||
214 | } | 253 | } |
215 | - log.debug("End AI Matching Job"); | 254 | + log.info("End AI Matching Job"); |
216 | 255 | ||
217 | Map<String, String> rtnMap = new HashMap<String, String>(); | 256 | Map<String, String> rtnMap = new HashMap<String, String>(); |
218 | rtnMap.put("jobGroupId", sJobGroup); | 257 | rtnMap.put("jobGroupId", sJobGroup); |
@@ -233,9 +272,9 @@ public class JobController { | @@ -233,9 +272,9 @@ public class JobController { | ||
233 | UUID uuid = UUID.randomUUID(); | 272 | UUID uuid = UUID.randomUUID(); |
234 | String sJobGroup = uuid.toString(); | 273 | String sJobGroup = uuid.toString(); |
235 | 274 | ||
236 | - log.debug("Start Return Job"); | 275 | + log.info("Start Return Job"); |
237 | jobService.returnRwsultData(sJobGroup, params); | 276 | jobService.returnRwsultData(sJobGroup, params); |
238 | - log.debug("End Return Job"); | 277 | + log.info("End Return Job"); |
239 | 278 | ||
240 | Map<String, String> rtnMap = new HashMap<String, String>(); | 279 | Map<String, String> rtnMap = new HashMap<String, String>(); |
241 | rtnMap.put("jobGroupId", sJobGroup); | 280 | rtnMap.put("jobGroupId", sJobGroup); |
@@ -311,6 +350,34 @@ public class JobController { | @@ -311,6 +350,34 @@ public class JobController { | ||
311 | 350 | ||
312 | return rtnVal; | 351 | return rtnVal; |
313 | } | 352 | } |
353 | + | ||
354 | + | ||
355 | + @PostMapping("/callAsyncJob") | ||
356 | + public Map<String, String> callAsyncJob( @RequestBody Map<String, String> params) throws Exception { | ||
357 | + | ||
358 | + /* | ||
359 | + * { | ||
360 | + * "PrgName": "cmd", | ||
361 | + * "PrgParams": "/C dir /w", | ||
362 | + * } | ||
363 | + */ | ||
364 | + //Job Create Log | ||
365 | + UUID uuid = UUID.randomUUID(); | ||
366 | + String sJobGroup = uuid.toString(); | ||
367 | + | ||
368 | + log.info("Start AI Sub Matching Job"); | ||
369 | + | ||
370 | + //OS Command Line 수행 | ||
371 | + jobService.callAsyncJobSub(sJobGroup, params); | ||
372 | + | ||
373 | + log.info("End Extra Matching Job"); | ||
374 | + | ||
375 | + Map<String, String> rtnMap = new HashMap<String, String>(); | ||
376 | + rtnMap.put("jobGroupId", sJobGroup); | ||
377 | + rtnMap.put("jobMessage", "OS Command 작업을 시작합니다. 작업이 끝난후 작업결과는 별도로 확인 바랍니다."); | ||
378 | + | ||
379 | + return rtnMap; | ||
380 | + } | ||
314 | 381 | ||
315 | 382 | ||
316 | } | 383 | } |
src/main/java/com/batch/service/JobService.java
@@ -36,7 +36,7 @@ import com.batch.config.MatchingSetup.Matching; | @@ -36,7 +36,7 @@ import com.batch.config.MatchingSetup.Matching; | ||
36 | import com.batch.mapper.primary.MatchingInnerDelingMapper; | 36 | import com.batch.mapper.primary.MatchingInnerDelingMapper; |
37 | import com.batch.mapper.secondary.OracleMapper; | 37 | import com.batch.mapper.secondary.OracleMapper; |
38 | import com.batch.util.FileUtil; | 38 | import com.batch.util.FileUtil; |
39 | - | 39 | +import com.batch.util.StringUtil; |
40 | import com.batch.service.JobService; | 40 | import com.batch.service.JobService; |
41 | import lombok.extern.slf4j.Slf4j; | 41 | import lombok.extern.slf4j.Slf4j; |
42 | 42 | ||
@@ -49,6 +49,9 @@ public class JobService { | @@ -49,6 +49,9 @@ public class JobService { | ||
49 | 49 | ||
50 | @Value("${python.ai.target}") | 50 | @Value("${python.ai.target}") |
51 | String sPythonAiTarget; | 51 | String sPythonAiTarget; |
52 | + | ||
53 | + @Value("${matching.auto.exceptListByComma}") | ||
54 | + String sExceptMatchType; | ||
52 | 55 | ||
53 | @Autowired | 56 | @Autowired |
54 | private JobLauncher jobLauncher; | 57 | private JobLauncher jobLauncher; |
@@ -102,8 +105,18 @@ public class JobService { | @@ -102,8 +105,18 @@ public class JobService { | ||
102 | } | 105 | } |
103 | } | 106 | } |
104 | 107 | ||
105 | - | ||
106 | for (String sJobType : lJobType) { | 108 | for (String sJobType : lJobType) { |
109 | + if (!matchingSetup.getMatching(sJobType).getActive()) { | ||
110 | + log.info("[" + sThreadName + "]JobType(" + sJobType + " is Disabled"); | ||
111 | + continue; | ||
112 | + }; | ||
113 | + | ||
114 | + List<String> lExceptMatchType = StringUtil.StringToArrayList(sExceptMatchType); | ||
115 | + if (lExceptMatchType.indexOf(sJobType) > -1) { | ||
116 | + log.info("[" + sThreadName + "]JobType(" + sJobType + " is Excepted"); | ||
117 | + continue; | ||
118 | + }; | ||
119 | + | ||
107 | log.info("[" + sThreadName + "]Current running job type: " + sJobType); | 120 | log.info("[" + sThreadName + "]Current running job type: " + sJobType); |
108 | JobExecution jobExe = invokeJob("matchingInnerDelng", sJobType, params); | 121 | JobExecution jobExe = invokeJob("matchingInnerDelng", sJobType, params); |
109 | if (!jobExe.getStatus().equals(BatchStatus.COMPLETED)) { | 122 | if (!jobExe.getStatus().equals(BatchStatus.COMPLETED)) { |
@@ -143,7 +156,7 @@ public class JobService { | @@ -143,7 +156,7 @@ public class JobService { | ||
143 | String sThreadName = Thread.currentThread().getName(); | 156 | String sThreadName = Thread.currentThread().getName(); |
144 | long startTime = System.currentTimeMillis(); | 157 | long startTime = System.currentTimeMillis(); |
145 | log.info("extra [" + sThreadName + "]Job Started : " + startTime); | 158 | log.info("extra [" + sThreadName + "]Job Started : " + startTime); |
146 | - log.debug("extra [" + sThreadName + "]params=" + paramRec.toString()); | 159 | + log.info("extra [" + sThreadName + "]params=" + paramRec.toString()); |
147 | 160 | ||
148 | MatchingExtraProcessorAuto matchingExtraProcessorAuto = new MatchingExtraProcessorAuto(matchingInnerDelingMapper); | 161 | MatchingExtraProcessorAuto matchingExtraProcessorAuto = new MatchingExtraProcessorAuto(matchingInnerDelingMapper); |
149 | 162 | ||
@@ -468,5 +481,60 @@ public class JobService { | @@ -468,5 +481,60 @@ public class JobService { | ||
468 | paramLog.put("exit_message", ""); | 481 | paramLog.put("exit_message", ""); |
469 | matchingInnerDelingMapper.finishUserJob(paramLog); | 482 | matchingInnerDelingMapper.finishUserJob(paramLog); |
470 | 483 | ||
471 | - } | 484 | + } |
485 | + | ||
486 | + | ||
487 | + @SuppressWarnings("rawtypes") | ||
488 | + @Async("commAsync") | ||
489 | + public void callAsyncJobSub(String jobGroupId, Map paramRec) throws Exception { | ||
490 | + | ||
491 | + | ||
492 | + //Job Create Log | ||
493 | + UUID uuid = UUID.randomUUID(); | ||
494 | + HashMap<String, String> mt = new HashMap<String, String>(); | ||
495 | + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss"); | ||
496 | + String sDate = dateFormat.format(new Date()) + ":" + uuid.toString(); | ||
497 | + | ||
498 | + Map<String, Object> paramLog = new HashMap<String, Object>(); | ||
499 | + paramLog.put("user_job_group", jobGroupId); | ||
500 | + paramLog.put("user_job_id", sDate); | ||
501 | + paramLog.put("user_job_name", "OS Command Run(" + paramRec.toString() + ")"); | ||
502 | + matchingInnerDelingMapper.createUserJob(paramLog); | ||
503 | + | ||
504 | + | ||
505 | + long startTime = System.currentTimeMillis(); | ||
506 | + log.info("OS Command Run Started : " + startTime); | ||
507 | + log.info("OS Command Run params=" + paramRec.toString()); | ||
508 | + | ||
509 | + String sPrgName = (String) paramRec.get("PrgName"); | ||
510 | + String sPrgParam = (String) paramRec.get("PrgParams"); | ||
511 | + List<String> lParams = StringUtil.StringToArrayList(sPrgParam, " "); | ||
512 | + | ||
513 | + ArrayList<String> lcmd = new ArrayList<String>(); | ||
514 | + lcmd.add(sPrgName); | ||
515 | + lcmd.addAll(lParams); | ||
516 | + lcmd.add(jobGroupId); | ||
517 | + | ||
518 | + new ProcessExecutor() | ||
519 | + .command(lcmd) | ||
520 | + .redirectOutput(new LogOutputStream() { | ||
521 | + @Override | ||
522 | + protected void processLine(String line) { | ||
523 | + log.info(line); | ||
524 | + } | ||
525 | + }) | ||
526 | + .execute(); | ||
527 | + | ||
528 | + long endTime = System.currentTimeMillis(); | ||
529 | + log.info("OS Command Run Ended: " + endTime); | ||
530 | + log.info("OS Command Running Time : " + (endTime - startTime) + "ms"); | ||
531 | + | ||
532 | + | ||
533 | +// //작업종료에 대한 로그 업데이트 | ||
534 | +// paramLog.put("exit_code", "0"); | ||
535 | +// paramLog.put("exit_message", ""); | ||
536 | +// matchingInnerDelingMapper.finishUserJob(paramLog); | ||
537 | + | ||
538 | + } | ||
539 | + | ||
472 | } | 540 | } |
src/main/resources/application.properties
@@ -18,14 +18,14 @@ spring.datasource.hikari.primary.username=account | @@ -18,14 +18,14 @@ spring.datasource.hikari.primary.username=account | ||
18 | spring.datasource.hikari.primary.password=daeucna10! | 18 | spring.datasource.hikari.primary.password=daeucna10! |
19 | 19 | ||
20 | # secondary | 20 | # secondary |
21 | -#spring.datasource.hikari.secondary.driver-class-name=oracle.jdbc.driver.OracleDriver | ||
22 | -#spring.datasource.hikari.secondary.jdbc-url=jdbc:oracle:thin:@vanguardlab.kr:63522/CONFINAS19C | ||
23 | -#spring.datasource.hikari.secondary.username=ai | ||
24 | -#spring.datasource.hikari.secondary.password=ai | ||
25 | spring.datasource.hikari.secondary.driver-class-name=oracle.jdbc.driver.OracleDriver | 21 | spring.datasource.hikari.secondary.driver-class-name=oracle.jdbc.driver.OracleDriver |
26 | -spring.datasource.hikari.secondary.jdbc-url=jdbc:oracle:thin:@daeuserver2.iptime.org:1521/orcl | ||
27 | -spring.datasource.hikari.secondary.username=CONFINAS3 | ||
28 | -spring.datasource.hikari.secondary.password=CONFINAS3 | 22 | +spring.datasource.hikari.secondary.jdbc-url=jdbc:oracle:thin:@vanguardlab.kr:63522/CONFINAS19C |
23 | +spring.datasource.hikari.secondary.username=ai | ||
24 | +spring.datasource.hikari.secondary.password=ai | ||
25 | +#spring.datasource.hikari.secondary.driver-class-name=oracle.jdbc.driver.OracleDriver | ||
26 | +#spring.datasource.hikari.secondary.jdbc-url=jdbc:oracle:thin:@daeuserver2.iptime.org:1521/orcl | ||
27 | +#spring.datasource.hikari.secondary.username=CONFINAS3 | ||
28 | +#spring.datasource.hikari.secondary.password=CONFINAS3 | ||
29 | 29 | ||
30 | 30 | ||
31 | 31 | ||
@@ -52,7 +52,13 @@ logging.level.p6spy=off | @@ -52,7 +52,13 @@ logging.level.p6spy=off | ||
52 | thread.comm.count=10 | 52 | thread.comm.count=10 |
53 | thread.ext.count=50 | 53 | thread.ext.count=50 |
54 | thread.ai.count=50 | 54 | thread.ai.count=50 |
55 | +thread.ai.count.rowmax=500 | ||
56 | +thread.ai.processing.wait=15 | ||
57 | +thread.ai.processing.wait.total=3600 | ||
55 | 58 | ||
56 | #Python 프로퍼티 설정 | 59 | #Python 프로퍼티 설정 |
57 | pytyon.path=D:\\Programs\\devp\\python-3.12.2\\python.exe | 60 | pytyon.path=D:\\Programs\\devp\\python-3.12.2\\python.exe |
58 | -python.ai.target=D:\\Working\\Python\\Test1.py | ||
59 | \ No newline at end of file | 61 | \ No newline at end of file |
62 | +python.ai.target=D:\\Working\\Python\\Test1.py | ||
63 | + | ||
64 | +#Auto Matching 제외 | ||
65 | +matching.auto.exceptListByComma=C-A-ROUND(-2) | ||
60 | \ No newline at end of file | 66 | \ No newline at end of file |
src/main/resources/matchingSetup.json
@@ -289,6 +289,54 @@ | @@ -289,6 +289,54 @@ | ||
289 | }, | 289 | }, |
290 | 290 | ||
291 | 291 | ||
292 | + | ||
293 | + { | ||
294 | + "active": true, | ||
295 | + "type": "C-A-ROUND(-2)", | ||
296 | + "typeName": "자기수익(전표번호,거래통화),상대비용(전표번호,거래통화),비교(년월,거래통화,거래금액)", | ||
297 | + | ||
298 | + "condOne": { | ||
299 | + "cond": [ | ||
300 | + "dta_ty in ('11','21','41')", | ||
301 | + "mtch_ty is null", | ||
302 | + "chit_no is not null", | ||
303 | + "chit_no != ''" | ||
304 | + ], | ||
305 | + "makeCompareKey": [ | ||
306 | + "chit_no", | ||
307 | + "delng_crncy" | ||
308 | + ] | ||
309 | + }, | ||
310 | + "condTwo": { | ||
311 | + "cond": [ | ||
312 | + "dta_ty in ('12','22','42')", | ||
313 | + "mtch_ty is null", | ||
314 | + "chit_no is not null", | ||
315 | + "chit_no != ''" | ||
316 | + ], | ||
317 | + "makeCompareKey": [ | ||
318 | + "chit_no", | ||
319 | + "delng_crncy" | ||
320 | + ] | ||
321 | + }, | ||
322 | + "uniqueKey": [ | ||
323 | + "sys_se", | ||
324 | + "accnut_ym", | ||
325 | + "sn" | ||
326 | + ], | ||
327 | + "compareKey": "compare_ky", | ||
328 | + "currencyField": "delng_crncy", | ||
329 | + "amtField": "round(sum(delng_amt), -2) as delng_amt", | ||
330 | + "compareField": [ | ||
331 | + "accnut_ym", | ||
332 | + "delng_crncy", | ||
333 | + "delng_amt" | ||
334 | + ], | ||
335 | + "matchingType": "mtch_ty", | ||
336 | + "matchingTypeName": "mtch_ty_nm", | ||
337 | + "matchingNumber": "mtch_ky" | ||
338 | + }, | ||
339 | + | ||
292 | 340 | ||
293 | 341 | ||
294 | 342 |
src/main/resources/mybatis/primaryMapper/MatchingInnerDelingMapper.xml
@@ -9,6 +9,9 @@ | @@ -9,6 +9,9 @@ | ||
9 | , accnut_ym | 9 | , accnut_ym |
10 | , cpr_code | 10 | , cpr_code |
11 | , partn_cpr | 11 | , partn_cpr |
12 | + <if test='asCurrency eq "Y".toString()'> | ||
13 | + , delng_crncy | ||
14 | + </if> | ||
12 | FROM | 15 | FROM |
13 | ( | 16 | ( |
14 | SELECT | 17 | SELECT |
@@ -16,6 +19,9 @@ | @@ -16,6 +19,9 @@ | ||
16 | , accnut_ym | 19 | , accnut_ym |
17 | , cpr_code | 20 | , cpr_code |
18 | , partn_cpr | 21 | , partn_cpr |
22 | + <if test='asCurrency eq "Y".toString()'> | ||
23 | + , delng_crncy | ||
24 | + </if> | ||
19 | , case when count(*) > 0 then 1 else 0 end as cnt | 25 | , case when count(*) > 0 then 1 else 0 end as cnt |
20 | FROM | 26 | FROM |
21 | public.batch_tbcr_inner_delng | 27 | public.batch_tbcr_inner_delng |
@@ -35,12 +41,18 @@ | @@ -35,12 +41,18 @@ | ||
35 | , accnut_ym | 41 | , accnut_ym |
36 | , cpr_code | 42 | , cpr_code |
37 | , partn_cpr | 43 | , partn_cpr |
44 | + <if test='asCurrency eq "Y".toString()'> | ||
45 | + , delng_crncy | ||
46 | + </if> | ||
38 | union all | 47 | union all |
39 | SELECT | 48 | SELECT |
40 | sys_se | 49 | sys_se |
41 | , accnut_ym | 50 | , accnut_ym |
42 | , partn_cpr as cpr_code | 51 | , partn_cpr as cpr_code |
43 | , cpr_code as partn_cpr | 52 | , cpr_code as partn_cpr |
53 | + <if test='asCurrency eq "Y".toString()'> | ||
54 | + , delng_crncy | ||
55 | + </if> | ||
44 | , case when count(*) > 0 then 1 else 0 end as cnt | 56 | , case when count(*) > 0 then 1 else 0 end as cnt |
45 | FROM | 57 | FROM |
46 | public.batch_tbcr_inner_delng | 58 | public.batch_tbcr_inner_delng |
@@ -60,12 +72,18 @@ | @@ -60,12 +72,18 @@ | ||
60 | , accnut_ym | 72 | , accnut_ym |
61 | , cpr_code | 73 | , cpr_code |
62 | , partn_cpr | 74 | , partn_cpr |
75 | + <if test='asCurrency eq "Y".toString()'> | ||
76 | + , delng_crncy | ||
77 | + </if> | ||
63 | ) m | 78 | ) m |
64 | GROUP BY | 79 | GROUP BY |
65 | sys_se | 80 | sys_se |
66 | , accnut_ym | 81 | , accnut_ym |
67 | , cpr_code | 82 | , cpr_code |
68 | , partn_cpr | 83 | , partn_cpr |
84 | + <if test='asCurrency eq "Y".toString()'> | ||
85 | + , delng_crncy | ||
86 | + </if> | ||
69 | HAVING sum(cnt) > 1 | 87 | HAVING sum(cnt) > 1 |
70 | </select> | 88 | </select> |
71 | 89 | ||
@@ -457,6 +475,7 @@ | @@ -457,6 +475,7 @@ | ||
457 | and accnut_ym = #{accnutYm} | 475 | and accnut_ym = #{accnutYm} |
458 | and cpr_code = #{cprCode} | 476 | and cpr_code = #{cprCode} |
459 | and partn_cpr = #{partnCpr} | 477 | and partn_cpr = #{partnCpr} |
478 | + and delng_crncy = #{delngCurncy} | ||
460 | and mtch_ky is null | 479 | and mtch_ky is null |
461 | <if test='conds eq "T".toString()'> | 480 | <if test='conds eq "T".toString()'> |
462 | and dta_ty in ('11','21','41') | 481 | and dta_ty in ('11','21','41') |
@@ -485,6 +504,7 @@ | @@ -485,6 +504,7 @@ | ||
485 | and accnut_ym = #{accnutYm} | 504 | and accnut_ym = #{accnutYm} |
486 | and cpr_code = #{cprCode} | 505 | and cpr_code = #{cprCode} |
487 | and partn_cpr = #{partnCpr} | 506 | and partn_cpr = #{partnCpr} |
507 | + and delng_crncy = #{delngCurncy} | ||
488 | and mtch_ky is null | 508 | and mtch_ky is null |
489 | <if test='conds eq "T".toString()'> | 509 | <if test='conds eq "T".toString()'> |
490 | and dta_ty in ('12','22','42') | 510 | and dta_ty in ('12','22','42') |
@@ -548,6 +568,8 @@ | @@ -548,6 +568,8 @@ | ||
548 | , partn_cpr | 568 | , partn_cpr |
549 | , tb_ty | 569 | , tb_ty |
550 | , delng_crncy | 570 | , delng_crncy |
571 | + , sum(cnt) as cnt | ||
572 | + , max(cnt_all) as cnt_all | ||
551 | FROM | 573 | FROM |
552 | ( | 574 | ( |
553 | SELECT | 575 | SELECT |
@@ -558,6 +580,7 @@ | @@ -558,6 +580,7 @@ | ||
558 | , delng_crncy | 580 | , delng_crncy |
559 | , case when dta_ty in ('11','21','41') then 'T' else 'B' end tb_ty | 581 | , case when dta_ty in ('11','21','41') then 'T' else 'B' end tb_ty |
560 | , case when count(*) > 0 then 1 else 0 end as cnt | 582 | , case when count(*) > 0 then 1 else 0 end as cnt |
583 | + , count(*) as cnt_all | ||
561 | FROM | 584 | FROM |
562 | public.batch_tbcr_inner_delng | 585 | public.batch_tbcr_inner_delng |
563 | WHERE | 586 | WHERE |
@@ -587,6 +610,7 @@ | @@ -587,6 +610,7 @@ | ||
587 | , delng_crncy | 610 | , delng_crncy |
588 | , case when dta_ty in ('12','22','42') then 'T' else 'B' end as tb_ty | 611 | , case when dta_ty in ('12','22','42') then 'T' else 'B' end as tb_ty |
589 | , case when count(*) > 0 then 1 else 0 end as cnt | 612 | , case when count(*) > 0 then 1 else 0 end as cnt |
613 | + , count(*) as cnt_all | ||
590 | FROM | 614 | FROM |
591 | public.batch_tbcr_inner_delng | 615 | public.batch_tbcr_inner_delng |
592 | WHERE | 616 | WHERE |
@@ -616,6 +640,7 @@ | @@ -616,6 +640,7 @@ | ||
616 | , delng_crncy | 640 | , delng_crncy |
617 | , tb_ty | 641 | , tb_ty |
618 | HAVING sum(cnt) > 1 | 642 | HAVING sum(cnt) > 1 |
643 | + ORDER BY cnt_all | ||
619 | </select> | 644 | </select> |
620 | 645 | ||
621 | <!-- User Job Status --> | 646 | <!-- User Job Status --> |
src/main/resources/mybatis/secondaryMapper/OracleMapper.xml
@@ -7,10 +7,19 @@ | @@ -7,10 +7,19 @@ | ||
7 | WITH COMP_INFO AS ( | 7 | WITH COMP_INFO AS ( |
8 | SELECT DISTINCT | 8 | SELECT DISTINCT |
9 | COMP_CODE AS COMP_CODE | 9 | COMP_CODE AS COMP_CODE |
10 | - , COMP_KR_NAME AS COMP_NAME | 10 | + , ( |
11 | + SELECT | ||
12 | + COMP_NAME_0 | ||
13 | + FROM TBBC_COMPANY_CODE_NLS | ||
14 | + WHERE | ||
15 | + SESSION_ID = A.SESSION_ID | ||
16 | + AND COMP_CODE = A.COMP_CODE | ||
17 | + AND #{accnutYm} BETWEEN START_YYMM AND END_YYMM | ||
18 | + AND ROWNUM = 1 | ||
19 | + ) AS COMP_NAME | ||
11 | , BOOK_CURRENCY AS COMP_CURRENCY | 20 | , BOOK_CURRENCY AS COMP_CURRENCY |
12 | , COMP_COA AS COMP_COA | 21 | , COMP_COA AS COMP_COA |
13 | - FROM TBBC_COMPANY_CODE | 22 | + FROM TBBC_COMPANY_CODE A |
14 | WHERE | 23 | WHERE |
15 | #{accnutYm} BETWEEN START_YYMM AND END_YYMM | 24 | #{accnutYm} BETWEEN START_YYMM AND END_YYMM |
16 | ) | 25 | ) |
@@ -28,7 +37,7 @@ | @@ -28,7 +37,7 @@ | ||
28 | A.COMP_ACCT_CODE, | 37 | A.COMP_ACCT_CODE, |
29 | ( | 38 | ( |
30 | SELECT DISTINCT | 39 | SELECT DISTINCT |
31 | - COMP_ACCT_NAME | 40 | + COMP_ACCT_CODE |
32 | FROM TBBC_COMP_ACCT_CODE | 41 | FROM TBBC_COMP_ACCT_CODE |
33 | WHERE | 42 | WHERE |
34 | FS_TYPE = '1' | 43 | FS_TYPE = '1' |
@@ -36,7 +45,7 @@ | @@ -36,7 +45,7 @@ | ||
36 | AND COMP_ACCT_CODE = A.COMP_ACCT_CODE | 45 | AND COMP_ACCT_CODE = A.COMP_ACCT_CODE |
37 | AND #{accnutYm} BETWEEN START_YYMM AND END_YYMM | 46 | AND #{accnutYm} BETWEEN START_YYMM AND END_YYMM |
38 | AND ROWNUM = 1 | 47 | AND ROWNUM = 1 |
39 | - ) AS COMP_ACCT_NAME, | 48 | + ) AS COMP_ACCT_NAME, |
40 | A.COMP_PROD_CODE, | 49 | A.COMP_PROD_CODE, |
41 | A.RECON_KEY, | 50 | A.RECON_KEY, |
42 | A.TRAN_DATE, | 51 | A.TRAN_DATE, |
@@ -50,13 +59,13 @@ | @@ -50,13 +59,13 @@ | ||
50 | A.CONS_ACCT_CODE, | 59 | A.CONS_ACCT_CODE, |
51 | ( | 60 | ( |
52 | SELECT | 61 | SELECT |
53 | - CONS_ACCT_KR_NAME | ||
54 | - FROM TBBC_ACCT_CODE | 62 | + CONS_ACCT_NAME_0 |
63 | + FROM TBBC_ACCT_CODE_NLS | ||
55 | WHERE | 64 | WHERE |
56 | CONS_ACCT_CODE = A.CONS_ACCT_CODE | 65 | CONS_ACCT_CODE = A.CONS_ACCT_CODE |
57 | - AND CONS_COA = 'GOV_I_COA' | 66 | + AND CONS_COA = 'LS_COA' |
58 | AND FS_TYPE = '1' | 67 | AND FS_TYPE = '1' |
59 | - AND TO_CHAR(SYSDATE, 'YYYYMM') BETWEEN START_YYMM AND END_YYMM | 68 | + AND #{accnutYm} BETWEEN START_YYMM AND END_YYMM |
60 | AND ROWNUM = 1 | 69 | AND ROWNUM = 1 |
61 | ) AS CONS_ACCT_NAME, | 70 | ) AS CONS_ACCT_NAME, |
62 | A.PROD_CODE, | 71 | A.PROD_CODE, |
@@ -75,8 +84,8 @@ | @@ -75,8 +84,8 @@ | ||
75 | A.OWN_BIZ_NO, | 84 | A.OWN_BIZ_NO, |
76 | A.PARTNER_BIZ_NO, | 85 | A.PARTNER_BIZ_NO, |
77 | A.ACCT_DATE, | 86 | A.ACCT_DATE, |
78 | - NULL AS CREATION_DIV_CODE, | ||
79 | - NULL AS COST_MAT_KEY | 87 | + A.CREATION_DIV_CODE, |
88 | + A.COST_MAT_KEY | ||
80 | FROM | 89 | FROM |
81 | TBCR_TRANSACTION_HISTORY A | 90 | TBCR_TRANSACTION_HISTORY A |
82 | INNER JOIN COMP_INFO B | 91 | INNER JOIN COMP_INFO B |
@@ -98,7 +107,10 @@ | @@ -98,7 +107,10 @@ | ||
98 | FROM TBCR_MATCHING A, | 107 | FROM TBCR_MATCHING A, |
99 | TBCR_MATCHING_DETAIL B | 108 | TBCR_MATCHING_DETAIL B |
100 | WHERE | 109 | WHERE |
101 | - A.MATCH_KEY = B.MATCH_KEY | 110 | + A.SESSION_ID = B.SESSION_ID |
111 | + AND A.CONS_GROUP = B.CONS_GROUP | ||
112 | + AND A.LEDGER = B.LEDGER | ||
113 | + AND A.MATCH_KEY = B.MATCH_KEY | ||
102 | AND A.ACCOUNT_PERIOD = B.ACCOUNT_PERIOD | 114 | AND A.ACCOUNT_PERIOD = B.ACCOUNT_PERIOD |
103 | AND A.CONS_GROUP = #{sysSe} | 115 | AND A.CONS_GROUP = #{sysSe} |
104 | AND A.ACCOUNT_PERIOD = #{accnutYm} | 116 | AND A.ACCOUNT_PERIOD = #{accnutYm} |
src/main/resources/schema.sql
@@ -33,11 +33,11 @@ CREATE TABLE IF NOT EXISTS batch_tbcr_inner_delng | @@ -33,11 +33,11 @@ CREATE TABLE IF NOT EXISTS batch_tbcr_inner_delng | ||
33 | sumry character varying(500), | 33 | sumry character varying(500), |
34 | org_mtch_ty character varying(10), | 34 | org_mtch_ty character varying(10), |
35 | org_mtch_ky numeric(10,0), | 35 | org_mtch_ky numeric(10,0), |
36 | - new_mtch_ty character varying(10), | 36 | + new_mtch_ty character varying(50), |
37 | new_mtch_ky numeric(10,0), | 37 | new_mtch_ky numeric(10,0), |
38 | compare_ky character varying(100), | 38 | compare_ky character varying(100), |
39 | mtch_sys character varying(10), | 39 | mtch_sys character varying(10), |
40 | - mtch_ty character varying(10), | 40 | + mtch_ty character varying(50), |
41 | mtch_ty_nm character varying(100), | 41 | mtch_ty_nm character varying(100), |
42 | mtch_ky bigint DEFAULT 0, | 42 | mtch_ky bigint DEFAULT 0, |
43 | creation_div_code character varying(3), | 43 | creation_div_code character varying(3), |
@@ -90,3 +90,11 @@ http://localhost:8080/api/job/return | @@ -90,3 +90,11 @@ http://localhost:8080/api/job/return | ||
90 | 90 | ||
91 | #작업진행결과 | 91 | #작업진행결과 |
92 | http://localhost:8080/api/job/userJobInfo/JOB그룹id | 92 | http://localhost:8080/api/job/userJobInfo/JOB그룹id |
93 | + | ||
94 | +#Async Job 호출 | ||
95 | +http://localhost:8080/api/job/callAsyncJob | ||
96 | +{ | ||
97 | + "PrgName": "cmd", | ||
98 | + "PrgParams": "/C dir /w" | ||
99 | +} | ||
100 | + |