Work without network or behind proxy server

1. dotnet and abp tools

 从能联网的电脑拷贝下列文件

c:\Users\<username>\.dotnet\tools\abp.exe
c:\Users\<username>\.dotnet\tools\abp-suite.exe
c:\Users\<username>\.dotnet\tools\.store\volo.abp.cli
c:\Users\<username>\.dotnet\tools\.store\volo.abp.suite

abp suite需要下列登录文件

c:\Users\<username>\.abp\cli\access-token.bin

2.Nuget package

 从能联网的电脑拷贝下列文件

C:\Users\<username>\.nuget\packages

3.VS code extensions

 从能联网的电脑拷贝下列文件

C:\Users\<username>\.vscode\extensions

4. Android Studio Emulator and Plugins

 从能联网的电脑拷贝Emulator文件

C:\Users\<username>\.android\avd

从Android Studio安装目录下拷贝

$\Android Studio\plugins

5. Chrome extension

找到对应extension的id

chrome://extensions/

拷贝下列文件

C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default

6. DbSchema drivers

拷贝下列文件

C:\Users\<username>\.DbSchema\drivers

7. Npm register behind proxy server

c:\Users\<username>\.npmrc
proxy=http://username@proxyip:proxyport/
https-proxy=http://username@proxyip:proxyport/
update-notifier=false
strict-ssl=false
registry=http://registry.npmjs.org/

如果应用于全部user,则可以使用如下命令

npm config set proxy=http://username@proxyip:proxyport/
npm config set https-proxy=http://username@proxyip:proxyport/
npm config set registry=http://registry.npmjs.org
npm config set "strict-ssl" false -g

证书认证需要设置环境变量 NODE_EXTRA_CA_CERTS

setx NODE_EXTRA_CA_CERTS %USERPROFILE%.hidden-dir-name\ca-combined.pem

查看config 使用

yarn config list

8. Maven repository behind proxy server

 配置repository和proxy,可以在某用户下和maven目录下

C:\Users\<username>\.m2\settings.xml
$\apache-maven-3.8.4-bin\apache-maven-3.8.4\conf\settings.xml
 
 <localRepository>C:\Users\<username>\.m2\repository</localRepository>

Maven镜像地址大全,Maven镜像地址配置示例

<mirror>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <url>https://repo1.maven.org/maven2/</url>
    <mirrorOf>central</mirrorOf>
</mirror> 

配置proxy

<proxy>
      <active>true</active>
      <protocol>http</protocol>
	  <username>username</username>
      <host>proxyip</host>
      <port>proxyport</port>
      <nonProxyHosts>maven</nonProxyHosts>
</proxy>
<proxy>
      <active>true</active>
      <protocol>https</protocol>
	  <username>username</username>
      <host>proxyip</host>
      <port>proxyport</port>
      <nonProxyHosts>maven</nonProxyHosts>
</proxy>  
 
如果报SSL错
> sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targe

需要导入CA证书和对应repository镜像地址到java keystore

c:\Program Files\Java\jdk1.8.0_281\jre\lib\security\cacerts

""C:\Program Files (x86)\Java\jdk1.8.0_281\bin\keytool.exe"" -import -trustcacerts -keystore ""C:\Program Files (x86)\Java\jre1.8.0_281\lib\security\cacerts"" -storepass changeit -alias maven -file maven.cer"  

如果是在Android Studio使用的话,使用的是安装目录下的jre而不是系统指定的路径
C:\Program Files\Android\Android Studio\jre\jre\lib\security\cacerts

    repositories {
       // google()
       // jcenter()
       // mavenLocal()
	   //  mavenCentral()
		maven { url 'https://repo1.maven.org/maven2/' }

    }  

用pom.xml测试download artifact , 使用命令会下载到指定的 localRepository 下

如果是 aar 类型的要指定 <type>

mvn -v
mvn clean compile
mvn install

<project xmlns = ""http://maven.apache.org/POM/4.0.0""
    xmlns:xsi = ""http://www.w3.org/2001/XMLSchema-instance""
    xsi:schemaLocation = ""http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"">
 
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.companyname.project-group</groupId>
    <artifactId>project</artifactId>
    <version>1.0</version>
    
    <dependencies>
        <dependency>
			<groupId>org.jetbrains.kotlin</groupId>
			<artifactId>kotlin-gradle-plugin</artifactId>
			<version>1.3.60</version>
		</dependency>
        <dependency>
			<groupId>com.facebook.flipper</groupId>
			<artifactId>flipper</artifactId>
			<version>0.99.0</version>
			<type>aar</type>
		</dependency>
    </dependencies>
</project>   

从能联网的电脑拷贝下列文件就可以离线使用

C:\Users\<username>\.m2\repository

9.Gradle behind proxy server

gradle wrap 使用本地文件

$\android\gradle\wrapper\gradle-wrapper.properties
#distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
distributionUrl=file\:/C:/Software/Android/gradle/gradle-6.5-all.zip  

 指定使用local repository

$\android\build.gradle

    repositories {
       // google()
       // jcenter()
        mavenLocal()
	   //  mavenCentral()
	//	maven { url 'https://repo1.maven.org/maven2/' }

    }  

配置proxy

$\android\gradle.properties  

    systemProp.http.proxyHost=192.168.1.1
    systemProp.http.proxyPort=80
    systemProp.http.proxyUser=userid
    systemProp.http.proxyPassword=password
    systemProp.https.proxyHost=192.168.1.1
    systemProp.https.proxyPort=80
    systemProp.https.proxyUser=userid
    systemProp.https.proxyPassword=password  

导入CA证书

"%JAVA_HOME%\bin\keytool" -import -trustcacerts -alias MY_ALIAS -file MY_CERT.crt -keystore "%JAVA_HOME%\jre\lib\security\cacerts"

gradle 下载的artifact是放在cache目录,存放路径与maven本地仓库是有差异的
gradel
C:\Users\sam\.gradle\caches\modules-2\files-2.1\junit\junit\4.12\2973d150c0dc1fefe998f834810d68f278ea58ec\junit-4.12.jar
maven
C:\Users\sam\.m2\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar
 
gradle能否将下载的jar存储到maven本地仓库而不是缓存目录
https://blog.csdn.net/feinifi/article/details/81458639
 
这里给出一个gradle的task
$android\app\build.gradle
task cacheToLocalMavenRepository(type: Copy) {
  from new File(gradle.gradleUserHomeDir, 'caches/modules-2/files-2.1')
  into repositories.mavenLocal().url
  eachFile {
    List<String> parts = it.path.split('/')
    it.path = (parts[0]+ '/' + parts[1]).replace('.','/') + '/' + parts[2] + '/' + parts[4]
  }
  includeEmptyDirs false
}

执行命令后就会将gradle cache的package copy一份到maven local repository下

>gradlew.bat cacheToLocalMavenRepository

 

posted on 2022-01-21 16:04  白马酒凉  阅读(37)  评论(0编辑  收藏  举报

导航