阿里云提供 aliyun sdk,可以通过申请获得的 <accessKeyId> 和 <accessSecret> 在 sdk 环境下,直接控制相应账号下阿里云的所有产品,例如设置域名解析、启动VPC、或者推送短信等等。
目录
这里我们研究如何在动态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 地址,不过我估计前面那个 2019 的数值会不时的调整,到时需要修改相应的代码。
获取页面内容后,可以通过 jsoup 进行解析,下载地址 https://jsoup.org/。代码也没什么难度,这里就不提供代码了。
路由器系统获取 IP 地址
利用 java 的 NetworkInterFace 类获取指定接口的 IP 地址
https://blog.csdn.net/joyous/article/details/88882112
Windows API 获取本机 IP 地址
通过 Windows API (C++) 访问网络设备接口,遍历所有本机地址
https://blog.csdn.net/joyous/article/details/1489842
完整演示
在路由器上运行该程序,先由 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,那有些麻烦,所以就写了一个批处理来统一编译。
阿里云 SDK 的项目不时的会发生增减,直接运行下面的批处理可能会出现访问目录出错的可能,需要根据实际情况进行增补或者删减。
源码目录中 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
来源:CSDN
作者:___NULL
链接:https://blog.csdn.net/joyous/article/details/88878563