本文主要解决以下问题:
1. 使用到tycho,且tycho的版本低于0.25.0
Tycho大大简化了Eclipse、OSGi插件中的pom.xml,它实际上是一系列专用于build Eclipse插件和OSGi模块的maven插件的集合。
2.需要offline模式,但是又不想要建私服
3.在offline模式下,出错主要信息是:Repository system is offline and no local cache available for...
Ray根本原因
这是tycho的一个BUG,在0.25.0版本已经修复,所以本文只适合0.25.0版本以下
tycho的wiki信息:
https://wiki.eclipse.org/Tycho/Release_Notes/0.25
查看该版本的bug fixes,就是下面这个 474885 的ID
修复该bug的git网址是:
http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/commit/?id=0e5f1f6d39f1acc50e904c8acac9f1f2cded4b53
修复该bug的commit点是:
0e5f1f6d39f1acc50e904c8acac9f1f2cded4b53
comments信息:
Ray下面来一步步解决该问题
1、下载tycho的源码(如果https无法访问,尝试改为http)
git clone https://git.eclipse.org/r/tycho/org.eclipse.tycho
2、切换到目标工程中使用tycho版本的tag点,例如这里使用的版本是0.20.0:
git check tycho-0.20.0
3、根据commit点( 0e5f1f6d39f1acc50e904c8acac9f1f2cded4b53)的diff信息 同步到当前的tag点(0.20.0)中
注意不要完成复制,因为修改的java文件(RemoteRepositoryCacheManager.java)中,
当前tag点(0.20.0)中有些 import信息 跟commit点(0e5f1f6d)是不同的。例如:
commit点(0e5f1f6d)用到的是
而tag点(0.20.0)用到的是
这种情况,就不需要改为commit(0e5f1f6d)中的一样,反正视情况而定。
4、 然后在可以联网的机器上使用命令
mvn clean install -Dmaven.test.skip=true
不需要测试用例,使用-Dmaven.test.skip=true
此次mvn命令中Maven最好使用新的repository,因为是一个临时的,最终只需要其中的一部分文件
5、可以发现是编译不通过的,原来是修改的java文件(RemoteRepositoryCacheManager.java)中重写了一个方法(createCacheFromFile)
该方法在当前tag(0.20.0)中的父类中是没有的。文件就是这个import信息中提到的。
现在需要更新该父类所在的文件(org.eclipse.equinox.p2.repository.jar)。
6、java文件(CacheManager)属于rt.equinox.p2项目,使用git下载
git clone http://git.eclipse.org/gitroot/equinox/rt.equinox.p2.git
7、查看java文件(CacheManager)的log信息
bundles/org.eclipse.equinox.p2.repository/src/org/eclipse/equinox/internal/p2/repository/CacheManager.java
可以发现方法(createCacheFromFile)是2015-04-28增加的。然后切换到这个日期之后的一个tag点,例如(
R4_5)
8、然后使用mvn clean install ,生成新的org.eclipse.equinox.p2.repository.jar文件。然后回到第4点继续
9、另外一种简便的方法解决org.eclipse.equinox.p2.repository.jar文件
下载4.5版本eclipse,
可以下载platform版本(http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.5-201506032000/eclipse-platform-4.5-win32.zip)
然后将plugins目录中的文件(org.eclipse.equinox.p2.repository_2.3.100.v20150428-1613.jar)复制
找到第4点中mvn中使用到的repository,进入以下目录
repository\p2\osgi\bundle\org.eclipse.equinox.p2.repository
查看该文件中的文件夹,当前tag(0.20.0)使用的是2.3.0.v20130412-2032
进入该文件夹,删除已存在的jar文件,粘贴刚才复制的jar文件,改名跟刚才删除的jar文件一致
这样回到第4点继续
10,回到第4点,继续,能往下走了。
11、最终文件生成的位置
repository\org\eclipse\tycho\org.eclipse.tycho.p2.resolver.impl\0.20.0
如果包含多个文件,关键文件只有3个
_maven.repositories
org.eclipse.tycho.p2.resolver.impl-0.20.0.jar
org.eclipse.tycho.p2.resolver.impl-0.20.0.jar.sha1
_maven.repositories:
文件夹文件列表信息,如果只用下面两个文件,打开该文件将多余的信息删除,如果需要使用0.20.0文件夹中所有文件,该文件不需要修改
13、将第8或者第9中的修改同样修改到目标工程的离线仓库中,离线仓库中使用的版本是什么,org.eclipse.equinox.p2.repository.jar文件就修改带什么文件夹中
最后,
能升级tycho版本的最好升级版本,0.25.0版本已修复该问题
能升级tycho版本的最好升级版本,0.25.0版本已修复该问题
能升级tycho版本的最好升级版本,0.25.0版本已修复该问题