我用Tycho构建了一个Eclipse RCP应用程序(Indigo)。构建在Win 7,64位机器上运行。
父POM包括:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<resolver>p2</resolver>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
...
产品配置如下所示(有一些遗漏和可读性的额外换行符):
<product name="My App" uid="myapp.product" id="myapp.core.product" application="myapp.core.application" version="0.1.4.qualifier" useFeatures="true" includeLaunchers="true">
<configIni use="default">
</configIni>
<launcherArgs>
<programArgs>-data @noDefault</programArgs>
<vmArgsMac>-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
</launcherArgs>
<launcher name="myapp_0_1_4">
<solaris/>
<win useIco="false">
<bmp/>
</win>
</launcher>
<vm>
<macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6</macos>
</vm>
<plugins>
<plugin id="com.ibm.icu"/>
<plugin id="myapp.core"/>
<plugin id="org.eclipse.core.runtime"/>
<plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
<plugin id="org.eclipse.equinox.app"/>
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.osgi"/>
<plugin id="org.eclipse.swt"/>
<plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.ui"/>
<plugin id="org.eclipse.ui.workbench"/>
</plugins>
<features>
<feature id="org.eclipse.rcp" version="3.7.2.v20120120-1424-9DB5FmnFq5JCf1UA38R-kz0S0272"/>
<feature id="myapp.platform_dependencies.feature" version="0.1.4.qualifier"/>
<feature id="myapp.core.feature" version="0.1.4.qualifier"/>
<feature id="myapp.ui.feature" version="0.1.4.qualifier"/>
<feature id="myapp.model.feature" version="0.1.4.qualifier"/>
</features>
<configurations>
<plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
</configurations>
</product>
构建运行没有问题,并生成zip文件,在目标操作系统Windows和Windows上解压缩。 Linux包括工作启动器。 (在Linux上,我必须先使启动程序可执行才能运行它。)
在Mac OS X(10.6.8)上,启动器(myapp.app)什么都不做......
当我运行java -jar -XstartOnFirstThread plugins/org.eclipse.equinox.launcher_[version]
时,应用程序即使没有启动画面也会启动。
我想我的产品配置中的任何地方都有错误的设置,但我不介意哪个。
答案 0 :(得分:3)
Windows for Mac上的跨平台构建预计不会起作用。原因是Tycho / p2需要使用Unix权限模拟文件系统。在Tycho的问题跟踪器中有一个request for this,但恕我直言实施此功能并不值得。
答案 1 :(得分:1)
我刚刚想出如何从Windows制作OSX可执行文件.app。
您可以将Tycho构建设置为为Mac / Linux生成.tar.gz文件,然后使用工具在tar文件中设置可执行文件的权限,因为tar支持* nix权限。
这是一个片段,展示了如何在pom.xml文件中设置它。 (此代码段还设置了Mac .app文件夹,并将版本添加到存档文件名): http://snipt.org/Aggid3
这是一个执行权限位的Java类。它需要Guava和Apache Commons Compress: http://snipt.org/Aggic1
这是一个包含所有依赖项的预构建jar: https://mega.co.nz/#!WcNjyRjS!KE7tM1xYrt1l9JIguUAsrgpLe2V0NS1QIj_NvdAnm88
使用上述用法示例将是: java -jar gztperms.jar“My Product-0.0.1.201309091838-macosx.cocoa.x86.tar.gz”“My Product-Executable-0.0.1.201309091838-macosx.cocoa.x86.tar.gz”“My Product.app/内容/ MacOS /我的产品“
我有一个相当简单的基于Ant的后构建脚本,我从Jenkins执行,找到.gz文件并在其上运行此脚本,现在一切都可以从工件链接开始。