Tycho构建无外网权限,如何从Maven依赖加载目标平台?
解决方案
方案1:让Tycho直接从Maven仓库引用打包的Target工件(推荐)
Tycho原生支持从Maven仓库加载打包好的Target平台,无需手动解压和修改.target文件,完美适配离线环境:
打包并上传Target工件
实例化.target文件后,将生成的完整目录打包为zip,上传到Nexus时可添加classifier=target便于识别(也可省略)。配置Tycho引用该Maven工件
在父POM或项目POM中替换原有的.target文件引用,配置tycho-target-platform-configuration插件:<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-target-platform-configuration</artifactId> <version>${tycho.version}</version> <configuration> <target> <artifact> <groupId>com.jeevaneo</groupId> <artifactId>xtext-p2-target</artifactId> <version>0.0.1.0</version> <type>zip</type> <!-- 若上传时添加了classifier,需追加此行:<classifier>target</classifier> --> </artifact> </target> <!-- 保留原环境配置 --> <environments> <environment> <os>win32</os> <ws>win32</ws> <arch>x86_64</arch> </environment> <!-- 其他环境配置... --> </environments> </configuration> </plugin>配置完成后,Tycho会自动从Nexus下载该zip工件,解压后作为目标平台使用,全程无需访问外部P2仓库。
方案2:调整生命周期阶段,确保前置操作优先执行
若坚持原有思路,需将解压和.target文件修改操作提前到Tycho解析目标平台之前:
修改maven-dependency-plugin执行阶段
将解压操作从process-resources移至pre-validate阶段(Tycho在validate阶段解析目标平台),同时升级插件版本(2.2版本过于老旧):<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.6.0</version> <executions> <execution> <id>unpack-target</id> <phase>pre-validate</phase> <goals> <goal>unpack-dependencies</goal> </goals> <configuration> <includeGroupIds>com.jeevaneo</includeGroupIds> <includeArtifactIds>xtext-p2-target</includeArtifactIds> <outputDirectory>${project.build.directory}/pde-target</outputDirectory> </configuration> </execution> </executions> </plugin>添加
.target文件修改插件
使用maven-replacer-plugin在同一阶段替换.target文件中的路径:<plugin> <groupId>com.google.code.maven-replacer-plugin</groupId> <artifactId>replacer</artifactId> <version>1.5.3</version> <executions> <execution> <id>update-target-path</id> <phase>pre-validate</phase> <goals> <goal>replace</goal> </goals> <configuration> <file>your-target-file.target</file> <replacements> <replacement> <token>原在线P2仓库URL或本地路径</token> <value>${project.build.directory}/pde-target</value> </replacement> </replacements> </configuration> </execution> </executions> </plugin>
方案3:分两步构建(利用tycho.mode=maven)
若要使用tycho.mode=maven参数,可拆分构建流程为两步:
- 执行前置操作(解压、修改
.target):mvn clean pre-validate -Dtycho.mode=maven - 正常执行Tycho构建:
第一步中mvn installtycho.mode=maven会让Tycho跳过PDE构建,仅执行Maven生命周期的前置步骤;第二步即可基于修改后的.target文件完成构建。
内容的提问来源于stack exchange,提问作者Highbrainer
相关产品推荐
相关产品推荐

