如何确保tycho构建不包含快照依赖项

时间:2014-01-17 06:44:11

标签: eclipse-rcp tycho

在非tycho发布期间,Maven会检查正在构建的项目中是否存在快照依赖项。

对于使用Tycho构建的E4项目,有没有办法做同样的事情?

2 个答案:

答案 0 :(得分:1)

p2存储库没有快照和非快照工件的(正式)概念。从技术上讲,只要不通过pomDependencies=consider使用Maven存储库中的SNAPSHOT工件,就不会在Tycho构建中拥有快照依赖项。后者可以采用与Maven相同的方式防止,即通过控制settings.xml中的Maven存储库(参见例如this other answer)。

但可能这不是你想要的。您可能希望确保不引用最终会消失的构件,并使构建不可重现。为此,您必须检查引用的p2存储库的保留策略,并确保仅引用“永久”保留的p2存储库。 (例如:Retention policy of the Eclipse project p2 repositories。)

如果保留策略不够好(或者您不相信提供商实际坚持它们),则需要存储引用的p2存储库的副本。例如,您可以将p2存储库下载为zip(或镜像存储库并自行压缩),将其部署到Nexus OSS并通过Unzip Plugin从您的构建中访问它。 (免责声明:Unzip插件是Tycho项目的产品,我是其中的一名提交者。)

答案 1 :(得分:0)

查看Maven Settings References

  

存储库 的:       版本,快照:这些是针对每种工件,版本或快照的策略。通过这两个集合,POM可以在单个存储库中独立于另一个类型更改每种类型的策略。例如,可以决定仅启用快照下载,可能用于开发目的。       已启用:对于是否为相应类型(版本或快照)启用此存储库,为true还是false。        updatePolicy:此元素指定更新应尝试发生的频率。 Maven会将本地POM的时间戳(存储在存储库的maven-metadata文件中)与远程数据进行比较。选项包括:always,daily(默认),interval:X(其中X是以分钟为单位的整数)或从不。        checksumPolicy:当Maven将文件部署到存储库时,它还会部署相应的校验和文件。您可以选择忽略,失败或警告缺少或不正确的校验和。       布局:在上面的存储库描述中,有人提到它们都遵循一个共同的布局。这大多是正确的。 Maven 2具有其存储库的默认布局;但是,Maven 1.x有不同的布局。使用此元素指定它是默认还是遗留。

我认为您所接受的设置可以接近以下内容。

<repository>
    <id>my-repo</id>
    <name>My Repo</name>
    <url>http://my.repo.org</url>
    <snapshots>
        <enabled>false</enabled>
        <updatePolicy>never</updatePolicy>
    </snapshots>
</repository>