阿里云 SDK 动态IP域名解析

版权声明:本文为博主原创文章,转载请标明出处,非常感谢! https://blog.csdn.net/joyous/article/details/88878563

阿里云提供 aliyun sdk,可以通过申请获得的 <accessKeyId> 和 <accessSecret> 在 sdk 环境下,直接控制相应账号下阿里云的所有产品,例如设置域名解析、启动VPC、或者推送短信等等。

目录

获取阿里云key

代码测试

读取解析信息

更新解析内容

获取当前 IP 地址

第三方网站获取 IP 地址

路由器系统获取 IP 地址

完整演示

批处理编译 aliyun sdk


这里我们研究如何在动态IP状态下,使用 aliyun sdk 实时修改在阿里云注册的域名的解析地址,以实现在动态IP情况下使用域名访问的需求。

获取阿里云key

首先需要申请 <accessKeyId> 和 <accessSecret>:

浏览器进入 https://www.aliyun.com/,单击“控制台"

 控制台内,右上角图标位置,鼠标悬浮,出现弹出菜单,单击"accesskeys"

对话框选择"继续使用accessKey"

单击“创建AccessKey”

会即刻开始下载CSV文件,<accessKeyId> 和 <accessSecret> 信息就在其中

下载阿里云 SDK,这里下载 java 的 sdk,其它还有 python、php 等环境的 sdk。

这里是编译好的 jar 文件,根据需要下载自己所需的 https://develop.aliyun.com/tools/sdk#/java

如果希望得到源码,可以到 https://github.com/aliyun/aliyun-openapi-java-sdk 通过 git 获取全部源码,再用 mvn 编译,如果你的 maven 仓库已经有一定积累,mvn 编译时很快就可以完成,文章末尾我写了一个批处理,可以自动编译该 git 下的所有源码,如果你们有不同的方法,能够一次全部编译的,也希望能分享一下。

代码测试

读取解析信息

取得某个域名下的解析状态(刚才下载CVS文件内的内容,需要替换代码内相应的部分):

package test;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsRequest;
import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsResponse;
import com.aliyuncs.alidns.model.v20150109.UpdateDomainRecordRequest;
import com.aliyuncs.alidns.model.v20150109.UpdateDomainRecordResponse;
import java.io.IOException;

public class LoadDomain
{

  public static void main(String[] args)
  {
    // aliyun 认证
    // 需要将下载的 accessKeyId、accessSecret 替换下面的 <accessKeyId>、<accessSecret>
    DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
    IAcsClient client = new DefaultAcsClient(profile);

    // 获取解析记录列表
    DescribeDomainRecordsRequest request = new DescribeDomainRecordsRequest();
    // 这里填各位自己的域名,填错域名将不能正确获取信息
    request.setDomainName("inull.net");

    try
    {
      // 提交需要取信息的域名
      // 并得到返回结果
      DescribeDomainRecordsResponse response = client.getAcsResponse(request);
      // 结果 (domain 信息)
      String strDomainInfo = new Gson().toJson(response);

      // 解析得到的域名 (json格式) 信息
      ObjectMapper mapper = new ObjectMapper();
      final JsonNode jsonDomainInfo = mapper.readTree(strDomainInfo);

      // 遍历 array
      final JsonNode jsonDomainRecords = jsonDomainInfo.get("domainRecords");
      if (jsonDomainRecords.isArray() == true)
      {
        for (final JsonNode jsonDomain : jsonDomainRecords)
        {
          // 输出每条一解析信息
          System.out.println(jsonDomain);
        }
      }
    }
    catch (ServerException e)
    {
      e.printStackTrace();
    }
    catch (ClientException e)
    {
      System.out.println("ErrCode:" + e.getErrCode());
      System.out.println("ErrMsg:" + e.getErrMsg());
      System.out.println("RequestId:" + e.getRequestId());
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }

  }

}

得到结果,其中 recordId 作为修改域名信息时编号

{"domainName":"inull.net","recordId":"17*************80","rR":"@","type":"A","value":"10.10.10.30","tTL":600,"line":"default","status":"ENABLE","locked":false,"weight":1}
{"domainName":"inull.net","recordId":"17*************80","rR":"blog","type":"A","value":"10.10.10.30","tTL":600,"line":"default","status":"ENABLE","locked":false,"weight":1}
{"domainName":"inull.net","recordId":"17*************00","rR":"clac","type":"A","value":"10.10.10.30","tTL":600,"line":"default","status":"ENABLE","locked":false,"weight":1}
{"domainName":"inull.net","recordId":"17************408","rR":"www","type":"A","value":"10.10.10.30","tTL":600,"line":"default","status":"ENABLE","locked":false,"weight":1}
{"domainName":"inull.net","recordId":"3******1","rR":"@","type":"MX","value":"mxdomain.qq.com.","tTL":3600,"priority":10,"line":"default","status":"ENABLE","locked":false,"weight":1}

更新解析内容

package test;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.alidns.model.v20150109.*;

public class UpdateDomain
{

  public static void main(String[] args)
  {
    // aliyun 认证
    // 需要替换 <accessKeyId> <accessSecret>
    DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
    IAcsClient client = new DefaultAcsClient(profile);

    // 更新域名解析
    UpdateDomainRecordRequest request = new UpdateDomainRecordRequest();
    // 某个解析的唯一编号,在上一个测试中获取
    request.setRecordId("17**********08");
    // 解析的类型
    request.setType("A");
    // 二级域名
    request.setRR("www");
    // 新的 IP 地址 (这里我随便写了个地址)
    request.setValue("10.10.10.99");
    // DNS更新时间 (单位秒,最少10分钟)
    request.setTTL((long) 1200);

    try
    {
      UpdateDomainRecordResponse response = client.getAcsResponse(request);
      System.out.println(new Gson().toJson(response));
    }
    catch (ServerException e)
    {
      e.printStackTrace();
    }
    catch (ClientException e)
    {
      System.out.println("ErrCode:" + e.getErrCode());
      System.out.println("ErrMsg:" + e.getErrMsg());
      System.out.println("RequestId:" + e.getRequestId());
    }
  }
}

返回结果

刷新阿里云的域名控制台,可以看到域名解析的地址已经被更新

获取当前 IP 地址

第三方网站获取 IP 地址

http://2019.ip138.com/ic.asp 可以获取自己的 IP 地址,不过我估计前面那个 2009 会不时的调整,到时需要修改相应的代码。
获取页面内容后,可以通过 jsoup 进行解析,下载地址 https://jsoup.org/。代码也没什么难度,这里就不提供代码了。

路由器系统获取 IP 地址

利用 java 的 NetworkInterFace 类获取指定接口的 IP 地址
https://blog.csdn.net/joyous/article/details/88882112

完整演示

在路由器上运行该程序,先由 Java 类 NetworkInterFace 获取接口地址,再由阿里云 (aliyun sdk) 将获得的 IP 填入相应的域名下实现动态域名解析。

/* 
 * 在动态 IP 地址的宽带上实现动态域名解析
 * 
 * 1. 通过 LocalNetwork 类获得 tun0 接口上的 IP 地址
 * 2. 利用阿里云 (aliyun sdk) DescribeDomainRecordsRequest 获取指定域名的 recordId
 * 3. 利用阿里云 (aliyun sdk) UpdateDomainRecordRequest 更新域名解析地址 
 * 
 */

package demo;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;

import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsRequest;
import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsResponse;
import com.aliyuncs.alidns.model.v20150109.UpdateDomainRecordRequest;
import com.aliyuncs.alidns.model.v20150109.UpdateDomainRecordResponse;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class UpdateDomains
{
  private static final Logger logger = LogManager.getLogger(UpdateDomains.class);

  public static void main(String[] args)
  {
    // 需要重新解析的域名
    String strDomainName = "inull.net";
    // 新的 IP 地址
    String strMyIP = "0.0.0.0";
    // 10 分钟
    long timeout = 600;

    // 获取 tun0 接口的 IP 地址
    LocalNetworkInfo localNetworkInfo = new LocalNetworkInfo();
    // 稍后用于更新域名解析
    strMyIP = localNetworkInfo.GetLocalIP("tun0");
    // 若地址无效 返回
    if (strMyIP == null)
    {
      logger.info("未获得 tun0 的有效 IP 地址");
      return;
    }
    else
    {
      logger.info(String.format("tun0 ip: %s", strMyIP));
    }

    // aliyun 认证信息
    DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", <accessKeyId>, <accessSecret>);
    IAcsClient client = new DefaultAcsClient(profile);
    logger.info("aliyun auth pass");

    // 获取解析记录列表
    DescribeDomainRecordsRequest request = new DescribeDomainRecordsRequest();
    request.setDomainName(strDomainName);
    logger.info(String.format("resolve domain %s", strDomainName));

    try
    {
      // 提交需要取信息的域名
      // 并得到返回结果
      DescribeDomainRecordsResponse response = client.getAcsResponse(request);
      // 结果 (domain 信息)
      String strDomainInfo = new Gson().toJson(response);
      logger.info(String.format("response domains info: %s", strDomainInfo));

      // 解析得到的域名 (json格式) 信息
      ObjectMapper mapper = new ObjectMapper();
      final JsonNode jsonDomainInfo = mapper.readTree(strDomainInfo);

      // 取得 domainRecords (type array)
      final JsonNode jsonDomainRecords = jsonDomainInfo.get("domainRecords");
      if (jsonDomainRecords.isArray() == true)
      {
        for (final JsonNode jsonDomain : jsonDomainRecords)
        {
          try
          {
            Thread.sleep(1000);
          }
          catch (InterruptedException e)
          {
            e.printStackTrace();
          }

          logger.info("***");
          logger.info(jsonDomain.toString());

          final String strRecordId = jsonDomain.get("recordId").asText();
          final String strRR = jsonDomain.get("rR").asText();
          final String strType = jsonDomain.get("type").asText();

          // 解析类型 A
          if (strType.equals("A") == true)
          {
            // 主域名
            if (strRR.equals("@") == true)
            {
              UpdateDomainRecordRequest updateDomainRecordRequest = new UpdateDomainRecordRequest();
              // 以下必填
              updateDomainRecordRequest.setRecordId(strRecordId);
              updateDomainRecordRequest.setRR(strRR);
              updateDomainRecordRequest.setType(strType);
              updateDomainRecordRequest.setValue(strMyIP);
              // DNS 更新时间 选填
              updateDomainRecordRequest.setTTL(timeout);

              // 避免因 UpdateDomainRecordResponse 异常而跳出循环
              try
              {
                // 发送更新请求
                UpdateDomainRecordResponse updateDomainRecordResponse = client.getAcsResponse(updateDomainRecordRequest);
                // 取得结果并打印
                String strResponse = new Gson().toJson(updateDomainRecordResponse);
                logger.info(strResponse);
              }
              catch (ClientException e)
              {
                e.printStackTrace();

                logger.error("ErrCode:" + e.getErrCode());
                logger.error("ErrMsg:" + e.getErrMsg());
                logger.error("RequestId:" + e.getRequestId());
              }
            }
            // clac 域名, www 域名, blog 域名
            else if (strRR.equals("clac") == true || strRR.equals("www") == true || strRR.equals("blog") == true)
            {
              // 创建更新请求
              UpdateDomainRecordRequest updateDomainRecordRequest = new UpdateDomainRecordRequest();
              // 以下必填
              updateDomainRecordRequest.setRecordId(strRecordId);
              updateDomainRecordRequest.setRR(strRR);
              updateDomainRecordRequest.setType(strType);
              updateDomainRecordRequest.setValue(strMyIP);
              // DNS 更新时间 选填
              updateDomainRecordRequest.setTTL(timeout);

              // 避免因 UpdateDomainRecordResponse 异常而跳出循环
              try
              {
                // 发送更新请求
                UpdateDomainRecordResponse updateDomainRecordResponse = client.getAcsResponse(updateDomainRecordRequest);
                // 取得结果并打印
                String strResponse = new Gson().toJson(updateDomainRecordResponse);
                logger.info(strResponse);
              }
              catch (ClientException e)
              {
                e.printStackTrace();

                logger.error("ErrCode:" + e.getErrCode());
                logger.error("ErrMsg:" + e.getErrMsg());
                logger.error("RequestId:" + e.getRequestId());
              }
            }
            else
            {
              logger.info(String.format("该解析 %s 不处理", strRR));
            }
          }
          else
          {
            logger.info(String.format("该类型 %s 不处理", strType));
          }
        }
      }

      logger.info("done");
    }
    catch (ServerException e)
    {
      e.printStackTrace();
    }
    catch (ClientException e)
    {
      e.printStackTrace();

      logger.error("ErrCode:" + e.getErrCode());
      logger.error("ErrMsg:" + e.getErrMsg());
      logger.error("RequestId:" + e.getRequestId());
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }

  }

}

/*
 * 获取本地接口的 IP 地址
 */
class LocalNetworkInfo
{
  /**
   * 因为存在一个接口有多个 IP 地址,这里只返回接口的第一 IP 地址<br>
   * 传入接口名字, 类 UNIX 使用 FDDH 或者 ADSL 的拨入接口通常都是 tun0
   * 
   * @param strInterFaceName
   * @return
   */
  public String GetLocalIP(String strInterfaceName)
  {
    final Logger logger = LogManager.getLogger(LocalNetworkInfo.class);
    String strResult = null;

    try
    {
      logger.info("GetLocalIP ...");

      // 枚举所有接口
      Enumeration<NetworkInterface> enuNetworkInterface = NetworkInterface.getNetworkInterfaces();
      // 所有接口信息存入 ArrayList 对象
      ArrayList<NetworkInterface> arryNetworkInterface = Collections.list(enuNetworkInterface);

      logger.info("ArrayList GetLocalIP");

      // 遍历存入接口的 ArryList 对象
      Iterator<NetworkInterface> iteratorInterface = arryNetworkInterface.iterator();
      while (iteratorInterface.hasNext() == true)
      {
        // 得到一个借口给
        NetworkInterface networkInterface = iteratorInterface.next();
        // 获取每个接口中的所有ip网络接口集合,因为可能有子接口
        ArrayList<InetAddress> arryInetAddress = Collections.list(networkInterface.getInetAddresses());

        // 获取接口名
        final String strInterface = networkInterface.getName();

        logger.info(strInterface);

        // 遍历某个接口下的所有 IP 地址
        Iterator<InetAddress> iteratorAddress = arryInetAddress.iterator();
        while (iteratorAddress.hasNext() == true)
        {
          InetAddress inet = iteratorAddress.next();
          // 筛选地址类型
          if (inet instanceof Inet4Address)
          {
            // 列出 ipv4 地址
            String strIP = inet.getHostAddress();
            logger.info(strIP);
            // System.out.printf("%-10s %-5s %-6s %-15s\n", "InetfaceName:", strInterface, "
            // IPv4:", strIP);

            if (strInterfaceName.equals(strInterface) == true && strResult == null)
            {
              // 设置返回值
              strResult = strIP;
            }
          }
          else
          {
            // 列出 ipv6 地址
            String strIP = inet.getHostAddress();
            // System.out.printf("%-10s %-5s %-6s %-15s\n", "InetfaceName:", strInterface, "
            // IPv6:", strIP);
          }
        }
      }
    }
    catch (SocketException s)
    {
      s.printStackTrace();
    }

    return strResult;
  }
}

运行结果,获取了 tun0 的地址后,IP 地址更新到阿里云的域名解析,并且返回运行状态。
用操作系统的计划任务自动调用,例如 5 分钟调用一次,或者再增加一些 IP 变化后再进行解析将更完善,下次有空再补上。

批处理编译 aliyun sdk

多个项目集成在一起的工程,每个项目好像只能单独编译,否则就得自己写 pom.xml,那有些麻烦,所以就写了一个批处理来统一编译,如果你们有其他更好的一次性编译全部项目的方法,也请分享一下。

源码目录中 aliyun-openapi-java-sdk 创建一个 go.bat 的文件,并一下内容
好像只能一个一个来,不能全部一次性编译,所以,如果你们知道如何一次性编译也请分享一下。

#逐个进入单个项目的目录,用 call mvn 进行编译
#完成后回退一级目录后继续进入另一个项目进行编译

cd aliyun-java-sdk-actiontrail
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-aegis
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-afs
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-airec
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-alidns
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-alikafka
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-alimt
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-arms
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-arms4finance
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-baas
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-batchcompute
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-bss
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-bssopenapi
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cbn
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ccc
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ccs
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cdn
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cds
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cf
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-chatbot
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cloudapi
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cloudauth
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cloudesl
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cloudmarketing
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cloudphoto
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cloudwf
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cms
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-commondriver
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-core
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cr
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-crm
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-cs
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-csb
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-dataworks-public
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-dcdn
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-dds
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-dm
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-dms-enterprise
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-domain
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-domain-intl
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-drcloud
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-drds
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-dts
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-dyplsapi
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-dypnsapi
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-dyvmsapi
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-eci
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ecs
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-edas
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ehpc
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-emr
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ess
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-finmall
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-foas
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ft
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-gpdb
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-green
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-hpc
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-hsm
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-httpdns
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-idst
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-imagesearch
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-imm
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-industry-brain
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-iot
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-itaas
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ivision
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-jaq
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-jarvis
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-jarvis-public
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-kms
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-linkedmall
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-linkface
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-linkwan
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-live
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-lubancloud
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-lubanruler
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-market
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-mopen
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-mts
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-nas
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ocs
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-oms
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ons
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-openanalytics
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ossadmin
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ots
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-petadata
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-polardb
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-pts
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-push
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-pvtz
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-qualitycheck
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-r-kvstore
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ram
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-rdc
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-rds
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ros
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-rtc
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-saf
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-sas-api
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-scdn
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-slb
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-smartag
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-snsuapi
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-sts
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-tesladam
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-teslamaxcompute
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-teslastream
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-trademark
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-ubsms
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-uis
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-vod
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-vpc
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-waf
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-xspace
call mvn -DskipTests=true -Dgpg.skip install
cd ..

cd aliyun-java-sdk-yundun
call mvn -DskipTests=true -Dgpg.skip install
cd ..


参考资料:
https://help.aliyun.com/product/29697.html
https://help.aliyun.com/document_detail/29776.html?spm=a2c4g.11186623.6.636.59c35eb4jTrcBK
https://help.aliyun.com/document_detail/29774.html?spm=a2c4g.11186623.6.642.60be5eb43jk7tZ
资料来源
https://develop.aliyun.com/tools/sdk
https://github.com/aliyun/aliyun-openapi-java-sdk

Q群讨论 236201801

猜你喜欢

转载自blog.csdn.net/joyous/article/details/88878563
今日推荐