diff --git a/README.md b/README.md
index 88b4079..7c5c4ec 100644
--- a/README.md
+++ b/README.md
@@ -7,4 +7,6 @@ Add this step into workflow
       uses: stCarolas/setup-maven@v5
       with:
         maven-version: 3.8.2
+        # download mirror,url or aliyun or empty
+        maven-mirror: '' 
 ```
diff --git a/action.yml b/action.yml
index eaed535..8a4f787 100644
--- a/action.yml
+++ b/action.yml
@@ -5,6 +5,9 @@ inputs:
   maven-version:
     description: 'Version Spec of the version to use.  Examples: 10.x, 10.15.1, >=10.15.0'
     default: '3.8.2'
+  maven-mirror:
+    description: 'download mirror,url or aliyun or empty'
+    default: ''
 runs:
   using: 'node20'
   main: 'lib/setup-maven.js'
diff --git a/lib/installer.js b/lib/installer.js
index 74aa9ce..3948bea 100644
--- a/lib/installer.js
+++ b/lib/installer.js
@@ -53,22 +53,34 @@ if (!tempDirectory) {
     }
     tempDirectory = path.join(baseLocation, 'actions', 'temp');
 }
-function getMaven(version) {
+function getMaven(version, mirror) {
     return __awaiter(this, void 0, void 0, function* () {
         let toolPath;
         toolPath = tc.find('maven', version);
         if (!toolPath) {
-            toolPath = yield downloadMaven(version);
+            toolPath = yield downloadMaven(version, mirror);
         }
         toolPath = path.join(toolPath, 'bin');
         core.addPath(toolPath);
     });
 }
 exports.getMaven = getMaven;
-function downloadMaven(version) {
+function get_server_url(mirror) {
+    if (mirror && (mirror.indexOf("http") === 0)) {
+        return mirror;
+    }
+    switch (mirror) {
+        case "aliyun":
+            return "https://maven.aliyun.com/repository/public";
+        default:
+            break;
+    }
+    return "https://repo.maven.apache.org/maven2";
+}
+function downloadMaven(version, mirror) {
     return __awaiter(this, void 0, void 0, function* () {
         const toolDirectoryName = `apache-maven-${version}`;
-        const downloadUrl = `https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${version}/apache-maven-${version}-bin.tar.gz`;
+        const downloadUrl = `${get_server_url(mirror)}/org/apache/maven/apache-maven/${version}/apache-maven-${version}-bin.tar.gz`;
         console.log(`downloading ${downloadUrl}`);
         try {
             const downloadPath = yield tc.downloadTool(downloadUrl);
diff --git a/lib/setup-maven.js b/lib/setup-maven.js
index 4ef56e4..0a07d1e 100644
--- a/lib/setup-maven.js
+++ b/lib/setup-maven.js
@@ -38,8 +38,9 @@ function run() {
     return __awaiter(this, void 0, void 0, function* () {
         try {
             let version = core.getInput('maven-version');
+            let mirror = core.getInput('maven-mirror');
             if (version) {
-                yield installer.getMaven(version);
+                yield installer.getMaven(version, mirror || "");
             }
         }
         catch (error) {
diff --git a/src/installer.ts b/src/installer.ts
index 5eabd27..e7a836e 100644
--- a/src/installer.ts
+++ b/src/installer.ts
@@ -19,21 +19,34 @@ if (!tempDirectory) {
   tempDirectory = path.join(baseLocation, 'actions', 'temp');
 }
 
-export async function getMaven(version: string) {
+export async function getMaven(version: string, mirror: string) {
   let toolPath: string;
   toolPath = tc.find('maven', version);
 
   if (!toolPath) {
-    toolPath = await downloadMaven(version);
+    toolPath = await downloadMaven(version, mirror);
   }
 
   toolPath = path.join(toolPath, 'bin');
   core.addPath(toolPath);
 }
 
-async function downloadMaven(version: string): Promise<string> {
+function get_server_url(mirror: string) {
+  if (mirror && (mirror.indexOf("http") === 0)) {
+    return mirror;
+  }
+  switch (mirror) {
+    case "aliyun":
+      return "https://maven.aliyun.com/repository/public";
+    default:
+      break;
+  }
+  return "https://repo.maven.apache.org/maven2";
+}
+
+async function downloadMaven(version: string, mirror: string): Promise<string> {
   const toolDirectoryName = `apache-maven-${version}`;
-  const downloadUrl = `https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${version}/apache-maven-${version}-bin.tar.gz`;
+  const downloadUrl = `${get_server_url(mirror)}/org/apache/maven/apache-maven/${version}/apache-maven-${version}-bin.tar.gz`;
   console.log(`downloading ${downloadUrl}`);
 
   try {
diff --git a/src/setup-maven.ts b/src/setup-maven.ts
index f25f53d..6dc0035 100644
--- a/src/setup-maven.ts
+++ b/src/setup-maven.ts
@@ -4,8 +4,9 @@ import * as installer from './installer';
 async function run() {
   try {
     let version = core.getInput('maven-version');
+    let mirror = core.getInput('maven-mirror');
     if (version) {
-      await installer.getMaven(version);
+      await installer.getMaven(version, mirror || "");
     }
   } catch (error) {
     core.setFailed((error as Error).message);