We have an Eclipse RCP product which I just migrated to use Eclipse Tycho/Maven to build the distributions. As we have read that Tycho since 0.24 is able to include the whole product distribution inside a standard MacOS application bundle we wanted to use that too.
However, it turns out that the Info.plist is at the wrong position inside the created MacOS bundle. The structure created is:
As I understand from the discussions around that feature it should be:
So the Info.plist is somehow put into a bogus "Eclipse.app/Contents" folder structure, and we have no idea why.
The tycho config inside our pom.xml:
<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>
<execution>
<id>archive-products</id>
<goals>
<goal>archive-products</goal>
</goals>
</execution>
<execution>
<id>create-product-distributions</id>
<goals>
<goal>materialize-products</goal>
<goal>archive-products</goal>
</goals>
</execution>
</executions>
<configuration>
<includeAllDependencies>true</includeAllDependencies>
<profileProperties>
<macosx-bundled>true</macosx-bundled>
</profileProperties>
<formats>
<win32>zip</win32>
<linux>tar.gz</linux>
<macosx>tar.gz</macosx>
</formats>
<products>
<product>
<id>OurApp</id>
<archiveFileName>our-app-${unqualifiedVersion}-${buildQualifier}</archiveFileName>
<rootFolders>
<macosx>OurApp.app</macosx>
</rootFolders>
</product>
</products>
</configuration>
</plugin>
Anybody got an idea what could make tycho do this? Thanks!
Ok, I think I figured it out.
My MyApp.product file had wrong paths to the icon files of the distribution. These would raise exceptions somewhere in the build process which nevertheless continues to provide distribution files.
Once I corrected those paths the distribution layout suddenly was as expected.
I assume the wrong paths had killed the task of assembling the distribution somewhere mid-process, so this unfinished state was then packaged.