Ver código fonte

first commit

张延森 3 anos atrás
commit
64ea3133dc

+ 33
- 0
.gitignore Ver arquivo

@@ -0,0 +1,33 @@
1
+HELP.md
2
+target/
3
+!.mvn/wrapper/maven-wrapper.jar
4
+!**/src/main/**/target/
5
+!**/src/test/**/target/
6
+
7
+### STS ###
8
+.apt_generated
9
+.classpath
10
+.factorypath
11
+.project
12
+.settings
13
+.springBeans
14
+.sts4-cache
15
+
16
+### IntelliJ IDEA ###
17
+.idea
18
+*.iws
19
+*.iml
20
+*.ipr
21
+
22
+### NetBeans ###
23
+/nbproject/private/
24
+/nbbuild/
25
+/dist/
26
+/nbdist/
27
+/.nb-gradle/
28
+build/
29
+!**/src/main/**/build/
30
+!**/src/test/**/build/
31
+
32
+### VS Code ###
33
+.vscode/

+ 117
- 0
.mvn/wrapper/MavenWrapperDownloader.java Ver arquivo

@@ -0,0 +1,117 @@
1
+/*
2
+ * Copyright 2007-present the original author or authors.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ *      https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+import java.net.*;
17
+import java.io.*;
18
+import java.nio.channels.*;
19
+import java.util.Properties;
20
+
21
+public class MavenWrapperDownloader {
22
+
23
+    private static final String WRAPPER_VERSION = "0.5.6";
24
+    /**
25
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
26
+     */
27
+    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
28
+        + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
29
+
30
+    /**
31
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
32
+     * use instead of the default one.
33
+     */
34
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
35
+            ".mvn/wrapper/maven-wrapper.properties";
36
+
37
+    /**
38
+     * Path where the maven-wrapper.jar will be saved to.
39
+     */
40
+    private static final String MAVEN_WRAPPER_JAR_PATH =
41
+            ".mvn/wrapper/maven-wrapper.jar";
42
+
43
+    /**
44
+     * Name of the property which should be used to override the default download url for the wrapper.
45
+     */
46
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
47
+
48
+    public static void main(String args[]) {
49
+        System.out.println("- Downloader started");
50
+        File baseDirectory = new File(args[0]);
51
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
52
+
53
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
54
+        // wrapperUrl parameter.
55
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
56
+        String url = DEFAULT_DOWNLOAD_URL;
57
+        if(mavenWrapperPropertyFile.exists()) {
58
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
59
+            try {
60
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
61
+                Properties mavenWrapperProperties = new Properties();
62
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
63
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
64
+            } catch (IOException e) {
65
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
66
+            } finally {
67
+                try {
68
+                    if(mavenWrapperPropertyFileInputStream != null) {
69
+                        mavenWrapperPropertyFileInputStream.close();
70
+                    }
71
+                } catch (IOException e) {
72
+                    // Ignore ...
73
+                }
74
+            }
75
+        }
76
+        System.out.println("- Downloading from: " + url);
77
+
78
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
79
+        if(!outputFile.getParentFile().exists()) {
80
+            if(!outputFile.getParentFile().mkdirs()) {
81
+                System.out.println(
82
+                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
83
+            }
84
+        }
85
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
86
+        try {
87
+            downloadFileFromURL(url, outputFile);
88
+            System.out.println("Done");
89
+            System.exit(0);
90
+        } catch (Throwable e) {
91
+            System.out.println("- Error downloading");
92
+            e.printStackTrace();
93
+            System.exit(1);
94
+        }
95
+    }
96
+
97
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
98
+        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
99
+            String username = System.getenv("MVNW_USERNAME");
100
+            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
101
+            Authenticator.setDefault(new Authenticator() {
102
+                @Override
103
+                protected PasswordAuthentication getPasswordAuthentication() {
104
+                    return new PasswordAuthentication(username, password);
105
+                }
106
+            });
107
+        }
108
+        URL website = new URL(urlString);
109
+        ReadableByteChannel rbc;
110
+        rbc = Channels.newChannel(website.openStream());
111
+        FileOutputStream fos = new FileOutputStream(destination);
112
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
113
+        fos.close();
114
+        rbc.close();
115
+    }
116
+
117
+}

BIN
.mvn/wrapper/maven-wrapper.jar Ver arquivo


+ 2
- 0
.mvn/wrapper/maven-wrapper.properties Ver arquivo

@@ -0,0 +1,2 @@
1
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.3/apache-maven-3.8.3-bin.zip
2
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

+ 310
- 0
mvnw Ver arquivo

@@ -0,0 +1,310 @@
1
+#!/bin/sh
2
+# ----------------------------------------------------------------------------
3
+# Licensed to the Apache Software Foundation (ASF) under one
4
+# or more contributor license agreements.  See the NOTICE file
5
+# distributed with this work for additional information
6
+# regarding copyright ownership.  The ASF licenses this file
7
+# to you under the Apache License, Version 2.0 (the
8
+# "License"); you may not use this file except in compliance
9
+# with the License.  You may obtain a copy of the License at
10
+#
11
+#    https://www.apache.org/licenses/LICENSE-2.0
12
+#
13
+# Unless required by applicable law or agreed to in writing,
14
+# software distributed under the License is distributed on an
15
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+# KIND, either express or implied.  See the License for the
17
+# specific language governing permissions and limitations
18
+# under the License.
19
+# ----------------------------------------------------------------------------
20
+
21
+# ----------------------------------------------------------------------------
22
+# Maven Start Up Batch script
23
+#
24
+# Required ENV vars:
25
+# ------------------
26
+#   JAVA_HOME - location of a JDK home dir
27
+#
28
+# Optional ENV vars
29
+# -----------------
30
+#   M2_HOME - location of maven2's installed home dir
31
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
32
+#     e.g. to debug Maven itself, use
33
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35
+# ----------------------------------------------------------------------------
36
+
37
+if [ -z "$MAVEN_SKIP_RC" ] ; then
38
+
39
+  if [ -f /etc/mavenrc ] ; then
40
+    . /etc/mavenrc
41
+  fi
42
+
43
+  if [ -f "$HOME/.mavenrc" ] ; then
44
+    . "$HOME/.mavenrc"
45
+  fi
46
+
47
+fi
48
+
49
+# OS specific support.  $var _must_ be set to either true or false.
50
+cygwin=false;
51
+darwin=false;
52
+mingw=false
53
+case "`uname`" in
54
+  CYGWIN*) cygwin=true ;;
55
+  MINGW*) mingw=true;;
56
+  Darwin*) darwin=true
57
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59
+    if [ -z "$JAVA_HOME" ]; then
60
+      if [ -x "/usr/libexec/java_home" ]; then
61
+        export JAVA_HOME="`/usr/libexec/java_home`"
62
+      else
63
+        export JAVA_HOME="/Library/Java/Home"
64
+      fi
65
+    fi
66
+    ;;
67
+esac
68
+
69
+if [ -z "$JAVA_HOME" ] ; then
70
+  if [ -r /etc/gentoo-release ] ; then
71
+    JAVA_HOME=`java-config --jre-home`
72
+  fi
73
+fi
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
+
101
+# For Cygwin, ensure paths are in UNIX format before anything is touched
102
+if $cygwin ; then
103
+  [ -n "$M2_HOME" ] &&
104
+    M2_HOME=`cygpath --unix "$M2_HOME"`
105
+  [ -n "$JAVA_HOME" ] &&
106
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
107
+  [ -n "$CLASSPATH" ] &&
108
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
109
+fi
110
+
111
+# For Mingw, ensure paths are in UNIX format before anything is touched
112
+if $mingw ; then
113
+  [ -n "$M2_HOME" ] &&
114
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
115
+  [ -n "$JAVA_HOME" ] &&
116
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
117
+fi
118
+
119
+if [ -z "$JAVA_HOME" ]; then
120
+  javaExecutable="`which javac`"
121
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
122
+    # readlink(1) is not available as standard on Solaris 10.
123
+    readLink=`which readlink`
124
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
125
+      if $darwin ; then
126
+        javaHome="`dirname \"$javaExecutable\"`"
127
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
128
+      else
129
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
130
+      fi
131
+      javaHome="`dirname \"$javaExecutable\"`"
132
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
133
+      JAVA_HOME="$javaHome"
134
+      export JAVA_HOME
135
+    fi
136
+  fi
137
+fi
138
+
139
+if [ -z "$JAVACMD" ] ; then
140
+  if [ -n "$JAVA_HOME"  ] ; then
141
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
142
+      # IBM's JDK on AIX uses strange locations for the executables
143
+      JAVACMD="$JAVA_HOME/jre/sh/java"
144
+    else
145
+      JAVACMD="$JAVA_HOME/bin/java"
146
+    fi
147
+  else
148
+    JAVACMD="`which java`"
149
+  fi
150
+fi
151
+
152
+if [ ! -x "$JAVACMD" ] ; then
153
+  echo "Error: JAVA_HOME is not defined correctly." >&2
154
+  echo "  We cannot execute $JAVACMD" >&2
155
+  exit 1
156
+fi
157
+
158
+if [ -z "$JAVA_HOME" ] ; then
159
+  echo "Warning: JAVA_HOME environment variable is not set."
160
+fi
161
+
162
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
163
+
164
+# traverses directory structure from process work directory to filesystem root
165
+# first directory with .mvn subdirectory is considered project base directory
166
+find_maven_basedir() {
167
+
168
+  if [ -z "$1" ]
169
+  then
170
+    echo "Path not specified to find_maven_basedir"
171
+    return 1
172
+  fi
173
+
174
+  basedir="$1"
175
+  wdir="$1"
176
+  while [ "$wdir" != '/' ] ; do
177
+    if [ -d "$wdir"/.mvn ] ; then
178
+      basedir=$wdir
179
+      break
180
+    fi
181
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
182
+    if [ -d "${wdir}" ]; then
183
+      wdir=`cd "$wdir/.."; pwd`
184
+    fi
185
+    # end of workaround
186
+  done
187
+  echo "${basedir}"
188
+}
189
+
190
+# concatenates all lines of a file
191
+concat_lines() {
192
+  if [ -f "$1" ]; then
193
+    echo "$(tr -s '\n' ' ' < "$1")"
194
+  fi
195
+}
196
+
197
+BASE_DIR=`find_maven_basedir "$(pwd)"`
198
+if [ -z "$BASE_DIR" ]; then
199
+  exit 1;
200
+fi
201
+
202
+##########################################################################################
203
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
204
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
205
+##########################################################################################
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
210
+else
211
+    if [ "$MVNW_VERBOSE" = true ]; then
212
+      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
213
+    fi
214
+    if [ -n "$MVNW_REPOURL" ]; then
215
+      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
216
+    else
217
+      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
218
+    fi
219
+    while IFS="=" read key value; do
220
+      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
221
+      esac
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"
227
+    if $cygwin; then
228
+      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
229
+    fi
230
+
231
+    if command -v wget > /dev/null; then
232
+        if [ "$MVNW_VERBOSE" = true ]; then
233
+          echo "Found wget ... using wget"
234
+        fi
235
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
236
+            wget "$jarUrl" -O "$wrapperJarPath"
237
+        else
238
+            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
239
+        fi
240
+    elif command -v curl > /dev/null; then
241
+        if [ "$MVNW_VERBOSE" = true ]; then
242
+          echo "Found curl ... using curl"
243
+        fi
244
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
245
+            curl -o "$wrapperJarPath" "$jarUrl" -f
246
+        else
247
+            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
248
+        fi
249
+
250
+    else
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"
255
+        # For Cygwin, switch paths to Windows format before running javac
256
+        if $cygwin; then
257
+          javaClass=`cygpath --path --windows "$javaClass"`
258
+        fi
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")
266
+            fi
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")
273
+            fi
274
+        fi
275
+    fi
276
+fi
277
+##########################################################################################
278
+# End of extension
279
+##########################################################################################
280
+
281
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
282
+if [ "$MVNW_VERBOSE" = true ]; then
283
+  echo $MAVEN_PROJECTBASEDIR
284
+fi
285
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
286
+
287
+# For Cygwin, switch paths to Windows format before running java
288
+if $cygwin; then
289
+  [ -n "$M2_HOME" ] &&
290
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
291
+  [ -n "$JAVA_HOME" ] &&
292
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
293
+  [ -n "$CLASSPATH" ] &&
294
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
295
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
296
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
297
+fi
298
+
299
+# Provide a "standardized" way to retrieve the CLI args that will
300
+# work with both Windows and non-Windows executions.
301
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
302
+export MAVEN_CMD_LINE_ARGS
303
+
304
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
305
+
306
+exec "$JAVACMD" \
307
+  $MAVEN_OPTS \
308
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
309
+  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
310
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 182
- 0
mvnw.cmd Ver arquivo

@@ -0,0 +1,182 @@
1
+@REM ----------------------------------------------------------------------------
2
+@REM Licensed to the Apache Software Foundation (ASF) under one
3
+@REM or more contributor license agreements.  See the NOTICE file
4
+@REM distributed with this work for additional information
5
+@REM regarding copyright ownership.  The ASF licenses this file
6
+@REM to you under the Apache License, Version 2.0 (the
7
+@REM "License"); you may not use this file except in compliance
8
+@REM with the License.  You may obtain a copy of the License at
9
+@REM
10
+@REM    https://www.apache.org/licenses/LICENSE-2.0
11
+@REM
12
+@REM Unless required by applicable law or agreed to in writing,
13
+@REM software distributed under the License is distributed on an
14
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+@REM KIND, either express or implied.  See the License for the
16
+@REM specific language governing permissions and limitations
17
+@REM under the License.
18
+@REM ----------------------------------------------------------------------------
19
+
20
+@REM ----------------------------------------------------------------------------
21
+@REM Maven Start Up Batch script
22
+@REM
23
+@REM Required ENV vars:
24
+@REM JAVA_HOME - location of a JDK home dir
25
+@REM
26
+@REM Optional ENV vars
27
+@REM M2_HOME - location of maven2's installed home dir
28
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
30
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31
+@REM     e.g. to debug Maven itself, use
32
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34
+@REM ----------------------------------------------------------------------------
35
+
36
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37
+@echo off
38
+@REM set title of command window
39
+title %0
40
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
41
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
42
+
43
+@REM set %HOME% to equivalent of $HOME
44
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
45
+
46
+@REM Execute a user defined script before this one
47
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
48
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
49
+if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
50
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
51
+:skipRcPre
52
+
53
+@setlocal
54
+
55
+set ERROR_CODE=0
56
+
57
+@REM To isolate internal variables from possible post scripts, we use another setlocal
58
+@setlocal
59
+
60
+@REM ==== START VALIDATION ====
61
+if not "%JAVA_HOME%" == "" goto OkJHome
62
+
63
+echo.
64
+echo Error: JAVA_HOME not found in your environment. >&2
65
+echo Please set the JAVA_HOME variable in your environment to match the >&2
66
+echo location of your Java installation. >&2
67
+echo.
68
+goto error
69
+
70
+:OkJHome
71
+if exist "%JAVA_HOME%\bin\java.exe" goto init
72
+
73
+echo.
74
+echo Error: JAVA_HOME is set to an invalid directory. >&2
75
+echo JAVA_HOME = "%JAVA_HOME%" >&2
76
+echo Please set the JAVA_HOME variable in your environment to match the >&2
77
+echo location of your Java installation. >&2
78
+echo.
79
+goto error
80
+
81
+@REM ==== END VALIDATION ====
82
+
83
+:init
84
+
85
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86
+@REM Fallback to current working directory if not found.
87
+
88
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90
+
91
+set EXEC_DIR=%CD%
92
+set WDIR=%EXEC_DIR%
93
+:findBaseDir
94
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
95
+cd ..
96
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
97
+set WDIR=%CD%
98
+goto findBaseDir
99
+
100
+:baseDirFound
101
+set MAVEN_PROJECTBASEDIR=%WDIR%
102
+cd "%EXEC_DIR%"
103
+goto endDetectBaseDir
104
+
105
+:baseDirNotFound
106
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107
+cd "%EXEC_DIR%"
108
+
109
+:endDetectBaseDir
110
+
111
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112
+
113
+@setlocal EnableExtensions EnableDelayedExpansion
114
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116
+
117
+:endReadAdditionalConfig
118
+
119
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122
+
123
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
124
+
125
+FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
126
+    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
127
+)
128
+
129
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
130
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
131
+if exist %WRAPPER_JAR% (
132
+    if "%MVNW_VERBOSE%" == "true" (
133
+        echo Found %WRAPPER_JAR%
134
+    )
135
+) else (
136
+    if not "%MVNW_REPOURL%" == "" (
137
+        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
138
+    )
139
+    if "%MVNW_VERBOSE%" == "true" (
140
+        echo Couldn't find %WRAPPER_JAR%, downloading it ...
141
+        echo Downloading from: %DOWNLOAD_URL%
142
+    )
143
+
144
+    powershell -Command "&{"^
145
+		"$webclient = new-object System.Net.WebClient;"^
146
+		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
147
+		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
148
+		"}"^
149
+		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
150
+		"}"
151
+    if "%MVNW_VERBOSE%" == "true" (
152
+        echo Finished downloading %WRAPPER_JAR%
153
+    )
154
+)
155
+@REM End of extension
156
+
157
+@REM Provide a "standardized" way to retrieve the CLI args that will
158
+@REM work with both Windows and non-Windows executions.
159
+set MAVEN_CMD_LINE_ARGS=%*
160
+
161
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
162
+if ERRORLEVEL 1 goto error
163
+goto end
164
+
165
+:error
166
+set ERROR_CODE=1
167
+
168
+:end
169
+@endlocal & set ERROR_CODE=%ERROR_CODE%
170
+
171
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
172
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
173
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
174
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
175
+:skipRcPost
176
+
177
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
178
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
179
+
180
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
181
+
182
+exit /B %ERROR_CODE%

+ 60
- 0
pom.xml Ver arquivo

@@ -0,0 +1,60 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4
+	<modelVersion>4.0.0</modelVersion>
5
+	<parent>
6
+		<groupId>org.springframework.boot</groupId>
7
+		<artifactId>spring-boot-starter-parent</artifactId>
8
+		<version>2.5.8</version>
9
+		<relativePath/> <!-- lookup parent from repository -->
10
+	</parent>
11
+	<groupId>com.njyunzhi</groupId>
12
+	<artifactId>h5</artifactId>
13
+	<version>beta</version>
14
+	<name>H5-SERVICE</name>
15
+	<description>H5 services for YunZhi</description>
16
+	<properties>
17
+		<java.version>1.8</java.version>
18
+	</properties>
19
+	<dependencies>
20
+		<dependency>
21
+			<groupId>org.springframework.boot</groupId>
22
+			<artifactId>spring-boot-starter-web</artifactId>
23
+		</dependency>
24
+
25
+		<dependency>
26
+			<groupId>org.projectlombok</groupId>
27
+			<artifactId>lombok</artifactId>
28
+			<optional>true</optional>
29
+		</dependency>
30
+		<dependency>
31
+			<groupId>org.springframework.boot</groupId>
32
+			<artifactId>spring-boot-starter-test</artifactId>
33
+			<scope>test</scope>
34
+		</dependency>
35
+
36
+		<dependency>
37
+			<groupId>com.github.binarywang</groupId>
38
+			<artifactId>weixin-java-mp</artifactId>
39
+			<version>4.2.0</version>
40
+		</dependency>
41
+	</dependencies>
42
+
43
+	<build>
44
+		<plugins>
45
+			<plugin>
46
+				<groupId>org.springframework.boot</groupId>
47
+				<artifactId>spring-boot-maven-plugin</artifactId>
48
+				<configuration>
49
+					<excludes>
50
+						<exclude>
51
+							<groupId>org.projectlombok</groupId>
52
+							<artifactId>lombok</artifactId>
53
+						</exclude>
54
+					</excludes>
55
+				</configuration>
56
+			</plugin>
57
+		</plugins>
58
+	</build>
59
+
60
+</project>

+ 13
- 0
src/main/java/com/njyunzhi/h5/H5Application.java Ver arquivo

@@ -0,0 +1,13 @@
1
+package com.njyunzhi.h5;
2
+
3
+import org.springframework.boot.SpringApplication;
4
+import org.springframework.boot.autoconfigure.SpringBootApplication;
5
+
6
+@SpringBootApplication
7
+public class H5Application {
8
+
9
+	public static void main(String[] args) {
10
+		SpringApplication.run(H5Application.class, args);
11
+	}
12
+
13
+}

+ 75
- 0
src/main/java/com/njyunzhi/h5/common/ResponseBean.java Ver arquivo

@@ -0,0 +1,75 @@
1
+package com.njyunzhi.h5.common;
2
+
3
+import java.io.Serializable;
4
+
5
+/**
6
+ * 接口统一状态返回BEAN.
7
+ */
8
+public class ResponseBean<T> implements Serializable {
9
+
10
+    private static final long serialVersionUID = 3593827217136880822L;
11
+
12
+    public static final int CODE_SUCCESS = 1000;
13
+    public static final int ERROR_AUTH_FAIL = 1001;
14
+    public static final int ERROR_AUTH_EXPIRED = 1002;
15
+    public static final int ERROR_MISSING_PARAMS = 1003;
16
+    public static final int ERROR_ILLEGAL_PARAMS = 1004;
17
+    public static final int ERROR_UNAVAILABLE = 1005;
18
+
19
+    private int code;
20
+    private String message;
21
+    private T data;
22
+    private String token;
23
+
24
+    /**
25
+     * 禁止外部 new
26
+     */
27
+    private ResponseBean() {
28
+        code = ResponseBean.CODE_SUCCESS;
29
+    }
30
+
31
+    public static <T> ResponseBean success(T data, String ...msgs) {
32
+        ResponseBean responseBean = new ResponseBean();
33
+        responseBean.code = ResponseBean.CODE_SUCCESS;
34
+        responseBean.data = data;
35
+
36
+        if (null != msgs && msgs.length > 0) {
37
+            responseBean.message = msgs[0];
38
+        }
39
+
40
+        return responseBean;
41
+    }
42
+
43
+    public static <T> ResponseBean error(String msg, int code, T ...datas) {
44
+        ResponseBean responseBean = new ResponseBean();
45
+        responseBean.code = code;
46
+        responseBean.message = msg;
47
+
48
+        if (null != datas && datas.length > 0) {
49
+            responseBean.data = datas[0];
50
+        }
51
+
52
+        return responseBean;
53
+    }
54
+
55
+    public int getCode() {
56
+        return code;
57
+    }
58
+
59
+    public String getMessage() {
60
+        return message;
61
+    }
62
+
63
+    public T getData() {
64
+        return data;
65
+    }
66
+
67
+    public String getToken() {
68
+        return token;
69
+    }
70
+    
71
+    @Override
72
+    public String toString() {
73
+        return  "{ code: "+code+", message: "+message+", data: <T> }";
74
+    }
75
+}

+ 53
- 0
src/main/java/com/njyunzhi/h5/common/WxUtils.java Ver arquivo

@@ -0,0 +1,53 @@
1
+package com.njyunzhi.h5.common;
2
+
3
+import com.njyunzhi.h5.config.WeixinConfig;
4
+import lombok.extern.slf4j.Slf4j;
5
+import me.chanjar.weixin.mp.api.WxMpService;
6
+import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
7
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
8
+import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
9
+import org.springframework.beans.factory.annotation.Autowired;
10
+import org.springframework.stereotype.Component;
11
+
12
+@Slf4j
13
+@Component
14
+public class WxUtils {
15
+    private WxMpService mpService;
16
+
17
+    @Autowired
18
+    public WxUtils(WeixinConfig config) {
19
+        WeixinConfig.Mp mp = config.getMp();
20
+        WxMpDefaultConfigImpl wxMpDefaultConfig = new WxMpDefaultConfigImpl();
21
+        wxMpDefaultConfig.setAppId(mp.getAppid());
22
+        wxMpDefaultConfig.setSecret(mp.getSecret());
23
+        wxMpDefaultConfig.setToken(mp.getToken());
24
+        wxMpDefaultConfig.setAesKey(mp.getAesKey());
25
+
26
+        if (null != mp.getHttpPoxyHost() && !"".equals(mp.getHttpPoxyHost())) {
27
+            wxMpDefaultConfig.setHttpProxyHost(mp.getHttpPoxyHost());
28
+            wxMpDefaultConfig.setHttpProxyPort(mp.getHttpProxyPort());
29
+        }
30
+
31
+        mpService = newMpService(wxMpDefaultConfig);
32
+    }
33
+
34
+
35
+    /**
36
+     * 生成 公众号 服务
37
+     * @param config
38
+     * @return
39
+     */
40
+    public WxMpService newMpService(WxMpConfigStorage config) {
41
+        WxMpService service = new WxMpServiceImpl();
42
+        service.setWxMpConfigStorage(config);
43
+        return service;
44
+    }
45
+
46
+    /**
47
+     * 获取 公众号服务
48
+     * @return
49
+     */
50
+    public WxMpService getMpService() {
51
+        return mpService;
52
+    }
53
+}

+ 26
- 0
src/main/java/com/njyunzhi/h5/config/CorsConfig.java Ver arquivo

@@ -0,0 +1,26 @@
1
+package com.njyunzhi.h5.config;
2
+
3
+import org.springframework.boot.SpringBootConfiguration;
4
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
5
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
6
+
7
+//@SpringBootConfiguration
8
+//public class CorsConfig implements WebMvcConfigurer {
9
+//    @Override
10
+//    public void addCorsMappings(CorsRegistry registry) {
11
+//        //添加映射路径
12
+//        registry.addMapping("/**")
13
+//                //是否发送Cookie
14
+//                .allowCredentials(true)
15
+//                //设置放行哪些原始域
16
+//                .allowedOrigins("*")
17
+//                //放行哪些请求方式
18
+//                .allowedMethods("GET", "POST", "PUT", "DELETE")
19
+//                //.allowedMethods("*") //或者放行全部
20
+//                //放行哪些原始请求头部信息
21
+//                .allowedHeaders("*");
22
+//    }
23
+//}
24
+
25
+
26
+public class CorsConfig {}

+ 22
- 0
src/main/java/com/njyunzhi/h5/config/WeixinConfig.java Ver arquivo

@@ -0,0 +1,22 @@
1
+package com.njyunzhi.h5.config;
2
+
3
+import lombok.Data;
4
+import org.springframework.boot.context.properties.ConfigurationProperties;
5
+import org.springframework.stereotype.Component;
6
+
7
+@Data
8
+@Component
9
+@ConfigurationProperties(prefix = "weixin")
10
+public class WeixinConfig {
11
+    private Mp mp;
12
+
13
+    @Data
14
+    public static class Mp {
15
+        private String appid;
16
+        private String secret;
17
+        private String token;
18
+        private String aesKey;
19
+        private String httpPoxyHost;
20
+        private Integer httpProxyPort;
21
+    }
22
+}

+ 59
- 0
src/main/java/com/njyunzhi/h5/controller/WxMpController.java Ver arquivo

@@ -0,0 +1,59 @@
1
+package com.njyunzhi.h5.controller;
2
+
3
+import com.njyunzhi.h5.common.ResponseBean;
4
+import com.njyunzhi.h5.common.WxUtils;
5
+import lombok.extern.slf4j.Slf4j;
6
+import me.chanjar.weixin.common.bean.WxJsapiSignature;
7
+import org.springframework.beans.factory.annotation.Autowired;
8
+import org.springframework.web.bind.annotation.*;
9
+
10
+@Slf4j
11
+@RestController
12
+@RequestMapping("/mp")
13
+public class WxMpController {
14
+
15
+    @Autowired
16
+    WxUtils wxUtils;
17
+
18
+    /**
19
+     * 微信公众号接入
20
+     * @param appid
21
+     * @param signature
22
+     * @param timestamp
23
+     * @param nonce
24
+     * @param echostr
25
+     * @return
26
+     */
27
+    @GetMapping(path = "/portal/{appid}", produces = "text/plain;charset=utf-8")
28
+    public String authGet(@PathVariable String appid,
29
+                          @RequestParam(name = "signature", required = false) String signature,
30
+                          @RequestParam(name = "timestamp", required = false) String timestamp,
31
+                          @RequestParam(name = "nonce", required = false) String nonce,
32
+                          @RequestParam(name = "echostr", required = false) String echostr) {
33
+        return echostr;
34
+    }
35
+
36
+    @PostMapping(path = "/portal/{appid}", produces = "application/xml; charset=UTF-8")
37
+    public String post(@PathVariable String appid,
38
+                       @RequestBody String requestBody,
39
+                       @RequestParam("signature") String signature,
40
+                       @RequestParam("timestamp") String timestamp,
41
+                       @RequestParam("nonce") String nonce,
42
+                       @RequestParam("openid") String openid,
43
+                       @RequestParam(name = "encrypt_type", required = false) String encType,
44
+                       @RequestParam(name = "msg_signature", required = false) String msgSignature) {
45
+
46
+        log.info("\n接收微信请求:[openid=[{}], [signature=[{}], encType=[{}], msgSignature=[{}],"
47
+                        + " timestamp=[{}], nonce=[{}], requestBody=[\n{}\n] ",
48
+                openid, signature, encType, msgSignature, timestamp, nonce, requestBody);
49
+
50
+        return "";
51
+    }
52
+
53
+    @GetMapping("/jssdk")
54
+    public ResponseBean jssdk(@RequestParam String url) throws Exception {
55
+        WxJsapiSignature jsapiSignature = wxUtils.getMpService().createJsapiSignature(url);
56
+        return ResponseBean.success(jsapiSignature);
57
+    }
58
+
59
+}

+ 19
- 0
src/main/java/com/njyunzhi/h5/exception/GlobalExceptionHandler.java Ver arquivo

@@ -0,0 +1,19 @@
1
+package com.njyunzhi.h5.exception;
2
+
3
+import com.njyunzhi.h5.common.ResponseBean;
4
+import lombok.extern.slf4j.Slf4j;
5
+import org.springframework.web.bind.annotation.ExceptionHandler;
6
+import org.springframework.web.bind.annotation.ResponseBody;
7
+import org.springframework.web.bind.annotation.RestControllerAdvice;
8
+
9
+@Slf4j
10
+@RestControllerAdvice
11
+public class GlobalExceptionHandler {
12
+
13
+    @ResponseBody
14
+    @ExceptionHandler(Exception.class)
15
+    public ResponseBean handleException(Exception e){
16
+        log.error(e.getMessage(),e);
17
+        return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_UNAVAILABLE);
18
+    }
19
+}

+ 14
- 0
src/main/resources/application.yml Ver arquivo

@@ -0,0 +1,14 @@
1
+###
2
+server:
3
+  port: 8080
4
+  servlet:
5
+    context-path: /
6
+
7
+weixin:
8
+  mp:
9
+    appid: wxd3bab568bc42d1de
10
+    secret: a29e70e90686b36fd3a9ab513d43558e
11
+    token: fd743543e7710bb0834671c4fa2622d2
12
+    aesKey: SreLm50AMt6SV9AFfbMLzqYhKN3CnR24cUDZCzumKj2
13
+    httpPoxyHost:
14
+    httpProxyPort: