gpt4 book ai didi

maven - 使用 tycho 就地更新更新站点

转载 作者:行者123 更新时间:2023-12-05 05:27:17 25 4
gpt4 key购买 nike

我正在使用 tycho构建 Eclipse RCP 应用程序。到目前为止,我们一直在使用 Eclipse 的构建系统,但我想使用 tycho 构建夜间快照。到目前为止,在我的公司,我们一直在发布带有更新站点的 RCP 应用程序,我们在 Eclipse 中的 site.xml 文件 View 中使用“Build All”对其进行更新。在 http://www.vogella.com/articles/EclipseTycho/article.html 之后,我尝试用 tycho 复制这种行为.

我的问题是,尽管在我们现有的更新站点中放置了一个 pom.xml,tycho 在构建时(使用 mvn clean verify 或 mvn install)生成了一个新的更新站点,在现有的更新站点中,在目标目录中/.如果我连续构建两次,第一个新生成的更新站点将被替换,而我希望它被更新。这对我来说似乎是可行的,因为生成的 JAR 没有相同的时间戳。

因此,我的问题是:如何模仿更新 site.xml、artifacts.jar 和 contents.jar 文件的 Eclipse 的“全部构建”行为(以便我的客户看到边缘 和更早 更新站点上的版本)?作为奖励,我还更愿意更新现有的更新站点,在 target/! 中生成一个新站点!

我现有更新站点中的 pom.xml 非常标准:

 <project>
<modelVersion>4.0.0</modelVersion>

<parent>
<relativePath>../../daily-build-repo/blah/pom.xml</relativePath>
<groupId>com.mycompany</groupId>
<artifactId>product_name</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>

<artifactId>com.mycompany.updateSites.nightly</artifactId>
<packaging>eclipse-repository</packaging>

</project>

[编辑]oberlies'answer 让我进步了,但它还没有奏效。为了让他的回答更准确,让我补充一点,我在 maven 构建的存储库的 pom.xml 中添加了他的代码,而不是我想发布的代码(因此主 pom 中没有对我想发布的更新站点的引用).这似乎在构建结束时有效:

[INFO] Mirroring to path/to/existing/update/site

但随后我收到一个严重的警告:

[WARNING] Mirror tool: Problems resolving provisioning plan.: [Unable to satisfy dependency from com.mycompany.blah to org.eclipse.ltk.ui.refactoring 0.0.0; Unable to satisfy dependency from com.mycompany.blah to org.eclipse.ltk.ui.refactoring 0.0.0; ...]

所有缺少的依赖项都是外部库,而不是我公司的库(已构建)。由于无法解析所有库,我想我做错了什么。奇怪的是,如代码片段所示,我两次缺少同一个库的依赖项:来自 com.mycompany.blah 的 plugin.xml 文件的版本 (3.7.0) 和版本 0.0.0。

尽管构建成功,但我的更新站点保持不变。[/编辑]

最佳答案

Maven 的约定是构建输出目录(target/)只用于输出,即现有文件不会影响构建结果。 (恕我直言,这很有意义。)

因此,要将内容添加到现有的 p2 存储库,您需要采用两步方法:首先将新内容构建为新的、单独的 p2 存储库,然后将新内容复制到现有存储库(也称为“更新站点”) .您甚至可以在同一构建中执行此操作:

  • 设置一个普通的 eclipse-repository 模块来聚合新内容。
  • 在该模块中,添加以下构建步骤:

    <plugin>
    <groupId>org.eclipse.tycho.extras</groupId>
    <artifactId>tycho-p2-extras-plugin</artifactId>
    <version>${tycho-extras-version}</version>
    <executions>
    <execution>
    <id>add-to-update-site</id>
    <phase>install</phase>
    <goals>
    <goal>mirror</goal>
    </goals>
    <configuration>
    <source>
    <repository>
    <url>${project.build.directory}/repository</url>
    </repository>
    </source>
    <destination>path/to/existing/update/site</destination>
    <append>true</append>
    </configuration>
    </execution>
    </executions>
    </plugin>

关于maven - 使用 tycho 就地更新更新站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20489233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com