Tycho将“p2”文件夹放在eclipse-repository和tycho-p2-director-plugin插件的产品中

时间:2011-12-21 00:24:06

标签: eclipse eclipse-rcp maven-3 tycho

我改变了我的Tycho + Maven构建(RCP应用程序)以使用Tycho 0.13和eclipse-repository加上tycho-p2-director-plugin(而不是我在Tycho 0.10中的旧“eclipse-application”)。 我设法使构建工作(生成ZIP文件),但它们比以前大2倍。 我看到第谷提出了我的产品不需要的许多其他东西: 1)根级别的“p2”文件夹 - 35 Mb。 2)很多无用的插件,比如

plugins/org.eclipse.jdt.debug_3.6.1.v20100715_r361
plugins/org.eclipse.pde.build_3.6.2.R36x_20110203
plugins/org.junit_4.8.1.v4_8_1_v20100427-1100
......etc.........

如何配置“eclipse-repository”和“tycho-p2-director-plugin”来避免这种情况?至少不要在产品中放入“p2”文件夹。我的软件不使用“p2 update”机制进行自动更新。

3 个答案:

答案 0 :(得分:1)

您的产品可能会拖延传递的可选依赖项。

见[1]如何避免这种情况。

始终创建p2 /文件夹,但不应为35MB。 如果您可以提供一个示例项目来重现问题,请打开一个错误[2]并附上它以及如何重现的步骤。

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=342704

[2] https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Tycho&rep_platform=All&op_sys=All

答案 1 :(得分:1)

我最终删除了"存档产品"完全 - 它不灵活,需要大量可怕的黑客攻击解包/重新打包/重命名。我现在自己打包ZIP文件:

<properties>
   <distributive.prefix>${project.build.directory}/products/taskadapter</distributive.prefix>
   <exclude_p2>**/p2/**</exclude_p2>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-p2-director-plugin</artifactId>
            <version>${tycho.version}</version>
            <executions>
                <execution>
                    <id>materialize-products</id>
                    <goals>
                        <goal>materialize-products</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <id>create-zip-files</id>
                    <phase>package</phase>
                    <configuration>
                        <target> 
                            <zip basedir="${distributive.prefix}/win32/win32/x86" 
                                 destfile="${project.build.directory}/taskadapter-win-${project.version}.zip"
                                 excludes="${exclude_p2}" />
                            <zip basedir="${distributive.prefix}/linux/gtk/x86" 
                                 destfile="${project.build.directory}/taskadapter-linuxgtk-${project.version}.zip"
                                 excludes="${exclude_p2}" />
                            <zip basedir="${distributive.prefix}/macosx/cocoa/x86" 
                                 destfile="${project.build.directory}/taskadapter-macos-${project.version}.zip"
                                 excludes="${exclude_p2}" />
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

答案 2 :(得分:0)

  1. “p2”文件夹,在实现产品时由p2本身创建文件夹。如果您的应用程序不支持更新本身,您只需将其从构建的产品中删除即可。
  2. 无用的插件。没有办法将它们从最终的物化产品中移除,它们是您产品的传递要求。有关详细信息,请参阅this