使用 Maven 构建多架构 SWT 应用程序

2023-12-24

我已经为 SWT 应用程序设置了一个 Maven 项目。该应用程序在多个平台上运行(OS X、Windows 64 位、Windows 32 位、Linux 64 位和 Linux 32 位),我已对其进行设置,以便在运行 Maven 时检测到该平台并打包应用程序转到不同的目标目录。以下是 pom.xml 中实现此目的的相关部分:

<profiles>
  <profile>
    <id>linux_x86_64</id>
    <activation>
      <os>
        <name>linux</name>
        <arch>amd64</arch>
      </os>
    </activation>
    <build>
      <directory>${project.basedir}/target/${project.version}/linux_x86_64</directory>
    </build>
  </profile>

  <profile>
    <id>win32_x86_64</id>
    <activation>
      <os>
        <name>linux</name>
        <arch>i386</arch>
      </os>
    </activation>
    <build>
      <directory>${project.basedir}/target/${project.version}/win32_x86_64</directory>
    </build>
    </profile>
  ...
</profiles>

SWT 使用的依赖项是这样的:

<dependencies>
  <dependency>
    <groupId>org.eclipse</groupId>
    <artifactId>swt</artifactId>
    <version>3.7.2.v3740</version>
  </dependency>
...
</dependencies>

为了清楚起见,我已在本地存储库中安装了 SWT 虚拟包 (org.eclipse.swt_3.7.2.v3740f.jar) 和all特定于平台的(org.eclipse.swt.gtk.linux.x86_64_3.7.2.v3740f、org.eclipse.swt.win32.x86_64_3.7.2.v3740f 等)。

我打包依赖项的方式是使用 maven-dependency-plugin 使用“lib”文件夹,并且 Maven 足够智能,可以复制 SWT 虚拟包和我打包应用程序的机器的特定于平台的机器。到目前为止,一切都很好...

问题是我想从一台机器编译不同平台的应用程序。我将如何实现这一目标?

我尝试使用每个平台所需的 SWT jar 在每个配置文件中设置一个属性,如下所示(Windows 64 位的示例):

<properties>
  <swt.artifactId>swt.win32.x86_64</swt.artifactId>
  <swt.version>3.7.2</swt.version>
</properties>

但是采用这种方法既可以获取特定于配置文件的 SWT jarand我运行 Maven 的特定平台被复制到“lib”目录中,最终得到三个 jar:

  • swt-3.7.2.v3740.jar
  • swt.gtk.linux.x86_64-3.7.2.jar
  • swt.win32.x86_64-3.7.2.jar

有没有一种方法可以指定一个配置文件,忽略运行它的机器,这样我就不需要手动删除它的 SWT jar?

提前致谢。


不确定依赖插件如何处理它,但如果您只有一个像这样的依赖项,它应该可以工作:

    <dependency>
        <groupId>${swt.groupId}</groupId>
        <artifactId>${swt.artifactId}</artifactId>
        <version>3.7.2</version>
        <scope>compile</scope>
    </dependency>

然后是这样的配置文件:

<profile>
  <id>gtk_linux_x86_64</id>
  <activation>
    <os>
      <name>linux</name>
      <arch>x86_64</arch>
    </os>
  </activation>
  <properties>
    <swt.groupId>org.eclipse.swt.gtk.linux</swt.groupId>
    <swt.artifactId>x86_64</swt.artifactId>
  </properties>
</profile>

现在,所需的 SWAT 版本会自动使用,但也可以设置为您需要的版本(例如,在构建版本时)以及使用:

mvn -P gtk_linux_x86_64

注意:根据需要更改您的 groupId 和 artifactId。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Maven 构建多架构 SWT 应用程序 的相关文章

随机推荐

  • Cassandra 集群 - 数据密度(每个节点的数据大小) - 寻求反馈和建议

    我正在考虑 Cassandra 集群的设计 用例将存储大行的时间序列数据的微小样本 使用 KairosDB 数据几乎是不可变的 非常罕见的删除 无更新 这部分工作得很好 然而 几年后 数据将相当大 最大大小将达到数百 TB 考虑到复制因子
  • 带弹出框/工具提示的 R 闪亮 valueBox

    我尝试从闪亮的仪表板为 valueBox 制作弹出框 工具提示 但到目前为止没有任何效果 我尝试使用shinyBS 例如popify函数 但随后收到错误警告 tagAssert中的错误 需要具有类 shiny tag 的对象 当我使用 ad
  • 使用 Cloud SQL 避免每日高额费用

    所以我处于开发模式 在开发后的 10 天内 我有了一个300 向 Google 计费 我做了什么 创建一个测试表 并向其中添加记录 文本和数字 我想说 从我的 Mac 执行了多个查询每天100个 持续6天 与周围有一张桌子100k 行 6
  • 如何在 Tkinter 画布上旋转多边形?

    我正在努力使用 Python 和 Tkinter 创建 asteroids 版本 当按下左或右箭头键时 船需要旋转 这艘船在 Tkinter 画布上是一个三角形 我无法想出调整三角形坐标的公式 我相信这与 sin 和 cos 有关 尽管我不
  • Meteor.js 在没有日志的情况下被杀死

    尝试运行 Meteor js 的示例 派对 示例失败 没有留下任何日志 meteor run parties gt Meteor server running on http localhost 3000 Killed 看起来由于某种原因崩
  • Storm拓扑未提交

    我已经配置了我的机器zookeeper nimbus supervisor运行正常 并且我的拓扑在LocalCluster中工作 LocalCluster cluster new LocalCluster cluster submitTop
  • 确定任意命题公式中变量的上/下界[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定一个任意命题公式 PHI 某些变量的线性约束 确定每个变量的 近似 上限和下限的最佳方法是什么 有些变量可能是无界的 在这种情况下 算
  • C++ 窗口时间

    我在利用时间方面遇到了问题 我想使用 C 在 Windows 上使用并获取微秒 我找不到路 规范 的答案是由unwind 一种流行的方法是使用 QueryPerformanceCounter 调用 然而 这种方法存在一些问题 它的目的是测量
  • 设计before_filterauthenticate_admin?

    我通过添加管理员属性向 Devise 添加了管理员角色 您能告诉我这是否是创建需要管理员用户签名的 before filter 的正确方法 在任何控制器中 before filter authenticate admin 在应用程序控制器中
  • Apache/httpd /var/www/html/ .cgi 脚本抛出 500 内部服务器错误

    我今天安装了一台新的 CentOS 7 x86 64 LAMP 服务器 我用 c 语言编译了一个简单的 CGI 脚本 并将其命名为 test cgi 并为 cgi 脚本启用了 AddHandler 然而 每次我尝试从 var www htm
  • MySQL、Rails ActiveRecord 日期分组和时区

    我想按创建日期对用户进行计数 当我查询最后一个用户时 我有 gt User last created at gt Thu 07 Aug 2014 21 37 55 BRT 03 00 当我计算每个日期的用户数时 我得到 gt User gr
  • htaccess 仅将主域重写到子文件夹

    我正在使用 cPanel 帐户托管多个站点 为了获得干净的 public html 我使用 htaccess 将主域重定向到子文件夹之一 所以当用户输入www example com 它将被重写为www example com mainsi
  • Express + Angular 路由导致无限循环 + 崩溃

    我正在使用 Express 和 Angular 开发 Node 应用程序 我使用 Angular 进行路由 并且我的路由设置如下 app config routeProvider function routeProvider routePr
  • 如何查找 Wix Burn 可执行文件的 GUID 以便以编程方式卸载?

    我创建了 wix 引导程序项目 安装时会创建注册表项 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion Uninstall SOME GUID 所以我可以使用 ARP
  • 使用 C# 以编程方式锁定 Windows 工作站

    我遇到了这个锁定 Windows 工作站的示例 using System Runtime InteropServices DllImport user32 dll SetLastError true static extern bool L
  • TCP 序列号

    我试图了解 TCP 标头的序列号是如何生成的 在某些地方我读到它是 数据包中第一个字节的索引 链接在这里 https stackoverflow com questions 2672734 tcp sequence number quest
  • 使用sqlalchemy解析python3中的hstore

    我有一个 csv 文件 其中一列以 hstore 格式编写 我想将它转换为 python 字典 但同时保持我的代码干燥 我的代码库使用 sqlalchemy 它有一个 parse hstore函数定义在https github com sq
  • 根据先前的值添加到列表

    我正在尝试将这个列表组合在一起 输入示例 M1 a 14 a 7 a 16 b 3 b 15 c 22 c 1 c 5 Output a 14 7 16 b 3 15 c 22 1 5 含义将所有 a 值组合在一起 同样适用于 b c 等
  • 为什么 math.acos 会导致 ValueError: math 域错误?

    我正在使用 math acos 函数 math acos 1 0000000000000002 这会引发数学域错误 有人能说出原因吗 我之前计算过这个值 这里这个值给出了错误 但如果我最后删除 2 它不会抛出错误 我不明白这是为什么 See
  • 使用 Maven 构建多架构 SWT 应用程序

    我已经为 SWT 应用程序设置了一个 Maven 项目 该应用程序在多个平台上运行 OS X Windows 64 位 Windows 32 位 Linux 64 位和 Linux 32 位 我已对其进行设置 以便在运行 Maven 时检测