gradle內網遇到的問題,依賴問題

一、eclipse離線安裝gradle插件


    把gradleclipse.zip的features、plugins拷貝到dropins下,包下載

鏈接: https://pan.baidu.com/s/1eKb1rTVJyfby_6xaG8vs2g 提取碼: 3ypr 複製這段內容後打開百度網盤手機App,操作更方便哦

二、內網項目用eclipse不能gradle build項目的問題


在內網上,eclipse初次build gradle項目會報錯,services.gradle.org......,因爲要先下載一些插件,可以先在有網的電腦上用gradle創建項目,創建完成後(1)拷貝項目空間下的.metadata到內網機上的eclipse的工作空間(2)拷貝gradle.user.home目錄(windows下爲:當前用戶名/.gradle)到另一臺機器的當前的gradle.user.home下。即可創建gradle項目


三、外網gradle項目拷貝到內網,依賴的jar包問題

 

場景:機器A外網可以正常構建項目,機器B內網要測試機器A源碼。即使把機器A的gradle緩存目錄拷貝到機器B的gradle.user.home ,然後在機器B上build項目,發現並不會 使用gradle緩存中的jar。

(方法1)

gradle緩存中的jar,拷貝到maven本地資源庫中

先把機器A中的gradle.user.home目錄拷貝到機器B的gradle.user.home

然後可以使用如下命令,把gradle緩存中的jar,拷貝到maven目錄中

在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
}

然後build.gradle同級目錄下執行

 

gradle cacheToLocalMavenRepository

 

然後在build.gradle中使用如下引入本地maven依賴,會級聯尋找依賴。

   repositories {
     mavenLocal() 
  }

 

推薦使用上述方法,不用再自己管理依賴

具體可參見:https://blog.csdn.net/feinifi/article/details/81458639或者本人https://blog.csdn.net/u013378306/article/details/100014422

 

(方法2)

如果還有問題,可以在機器A上build好gradle項目,找到build好的項目jar包,解壓jar包,找到lib下的所有jar,拷貝到新的電腦上某個目錄,使用本地文件目錄的像是加載,如(要注意目錄路徑、文件路徑問題)

  repositories {
      flatDir {
           dirs '../local_run_lib'
      }
  }

,然後再寫

dependencies {compile (group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.4.1.RELEASE')}

注意flatdir 不會自動尋找關係依賴,意識是你寫一個依賴包就只能引入這一個依賴包,而不會引入此依賴包所依賴的依賴包,如  compile (group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.4.1.RELEASE')並不會再去尋找此jar的依賴包。而(方法一)可以。

(方法3)

如果還有問題可以在build.gradle中直接寫如下腳本,導入目錄下所有jar

dependencies {
    ext.rootProjectLibs = new File(rootProject.rootDir,'local_run_lib').getAbsolutePath()
    ext.jarTree =fileTree(dir: rootProjectLibs,include: '**/*.jar')
    compile jarTree
}

 

此種方式會引入一些不必要的包,也會包衝突,不推薦
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章